Извлечение различных значений в столбце с использованием Spark DataFrame
При использовании версии Spark 1.6.1 мне нужно получить различные значения в столбце, а затем выполнить какое-то конкретное преобразование поверх него. Столбец содержит более 50 миллионов записей и может увеличиваться в размерах.
Я понимаю что делаюdistinct.collect()
вернет вызов в программу драйвера. В настоящее время я выполняю эту задачу, как показано ниже, есть ли лучший подход?
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()