Spark 2.0-2.3 DataSets groupByKey и mapGroups
Я вижу правильный вывод записей при локальном запуске. Однако, когда я работаю в кластере, результат будет другим и, казалось бы, противоречивым. Даже некоторые из выводов mappedGroup верны. Это проблема с искровым затвором? Не уверен, как лучше описать то, что я вижу.
Возможно, я не понимаю mapGroups и что не все значения для каждой группы передаются в переменную recordList.
case class MyCaseClass (keyValue: int,c2: String,c3: String,c4: Double)
case class NewClass (thing1:String,thing2:String,thing3:String,thing4:String)
case class WorkTodo(myClassRecords: Seq[MyCaseClass]){
def toNewRecords: Seq[NewClass] = {
//e.g. work that requires all MyCaseClass.keyValue=1 to be in the list.
//This function would create new Java Objects to perform calculations and eventually output a set of NewClass records
}
val processedRecords = ds.as[MyCaseClass].groupByKey(_.keyValue)
.mapGroups {
case (v, iter) => {
var recordList = new ListBuffer[MyCaseClass]
iter.foreach {x=>
recordList += MyCaseClass(x.keyValue,x.c2,x.c3,x.c4)
}
WorkToDo(recordList).toNewRecords
}
}
PS Любые другие решения, которые все еще используют набор данных, приветствуются:)