Scala 数据集上的Spark aggregateByKey

Scala 数据集上的Spark aggregateByKey,scala,apache-spark,apache-spark-sql,spark-streaming,spark-dataframe,Scala,Apache Spark,Apache Spark Sql,Spark Streaming,Spark Dataframe,这是由编写的mutable.HashSet[String]上aggregateByKey的一个示例@ 但是当我改为Dataset时,我得到了以下错误,这是因为Spark 2.0(我正在使用的版本)不支持Dataset上的aggregateByKey吗 java.lang.NullPointerException at org.apache.spark.sql.Dataset.schema(Dataset.scala:393) at org.apache.spark.sql.Dataset.toD

这是由编写的mutable.HashSet[String]上aggregateByKey的一个示例@

但是当我改为Dataset时,我得到了以下错误,这是因为Spark 2.0(我正在使用的版本)不支持Dataset上的aggregateByKey吗

java.lang.NullPointerException
at org.apache.spark.sql.Dataset.schema(Dataset.scala:393)
at org.apache.spark.sql.Dataset.toDF(Dataset.scala:339)
at org.apache.spark.sql.Dataset.showString(Dataset.scala:239)
at org.apache.spark.sql.Dataset.show(Dataset.scala:526)
at org.apache.spark.sql.Dataset.show(Dataset.scala:486)
at org.apache.spark.sql.Dataset.show(Dataset.scala:495)
代码如下:

case class Food(name: String,
                price: String,
                e_date: String)    
rdd.aggregateByKey( Seq(Food("", "", "")).toDS )( 
                    (f1,f2) => f1.union(f2), 
                    (f1,f2) => f1.union(f2))
/////////
found f1 = Invalid tree; null:
                    null

任何关于为什么会发生这种情况的想法,请提前感谢

是的,我认为aggregateByKey只适用于rdd。
以下是文档(针对python)

删除.toDS并尝试代码。 可能在聚合完成后将其转换为DS(不确定性能是否会更好)

case class Food(name: String,
                price: String,
                e_date: String)    
rdd.aggregateByKey( Seq(Food("", "", "")).toDS )( 
                    (f1,f2) => f1.union(f2), 
                    (f1,f2) => f1.union(f2))
/////////
found f1 = Invalid tree; null:
                    null