Obteniendo valores distintos en una columna usando Spark DataFrame
Al usar la versión 1.6.1 de Spark, necesito obtener valores distintos en una columna y luego realizar alguna transformación específica encima. La columna contiene más de 50 millones de registros y puede crecer más.
Entiendo que hacer undistinct.collect()
devolverá la llamada al programa del controlador. Actualmente estoy realizando esta tarea de la siguiente manera, ¿hay un mejor enfoque?
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()