Mit Spark DataFrame unterschiedliche Werte in einer Spalte abrufen

Verwenden von Spark 1.6.1 Ich muss bestimmte Werte für eine Spalte abrufen und dann eine bestimmte Transformation darüber durchführen. Die Spalte enthält mehr als 50 Millionen Datensätze und kann größer werden.
Ich verstehe, dass ein @ zu tdistinct.collect() ruft das Treiberprogramm wieder auf. Derzeit führe ich diese Aufgabe wie folgt aus. Gibt es einen besseren Ansatz?

 import sqlContext.implicits._
 preProcessedData.persist(StorageLevel.MEMORY_AND_DISK_2)

 preProcessedData.select(ApplicationId).distinct.collect().foreach(x => {
   val applicationId = x.getAs[String](ApplicationId)
   val selectedApplicationData = preProcessedData.filter($"$ApplicationId" === applicationId)
   // DO SOME TASK PER applicationId
 })

 preProcessedData.unpersist()  

Antworten auf die Frage(2)

Ihre Antwort auf die Frage