Buscando valores distintos em uma coluna usando o Spark DataFrame

Usando o Spark 1.6.1, preciso buscar valores distintos em uma coluna e, em seguida, executar alguma transformação específica em cima dela. A coluna contém mais de 50 milhões de registros e pode aumentar.
Eu entendo que fazer umdistinct.collect() trará a chamada de volta ao programa do driver. Atualmente, estou executando esta tarefa como abaixo: existe uma abordagem melhor?

 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()  

questionAnswers(1)

yourAnswerToTheQuestion