具有reduceGroups的重复数据删除行找不到编码器[行]

时间:2018-10-31 14:03:57

标签: scala apache-spark

val spark = SparkSession.builder().appName("Test").master("local").getOrCreate()
import spark.implicits._

spark.sparkContext.parallelize(List((50, 2), (34, 4))).toDF("cs_p_id", "cs_ed")
  .groupByKey(_.getAs[String]("cs_p_id"))
  .reduceGroups(Seq(_, _).maxBy(_.getAs[Long]("cs_ed")))
  .map(_._2) // Unable to find encoder for type stored in a Dataset.

以上内容无法编译,因为map找不到隐式Encoder[Row]
当然,我不是唯一尝试执行此简单操作的人,那怎么走?

谢谢

编辑:
我发现我无法相信人们正在这样做的解决方案:

tableData
  .groupByKey(_.getAs[String]("cs_p_id"))
  .reduceGroups(Seq(_, _).maxBy(_.getAs[Long]("cs_ed")))
  .map(_._2)(RowEncoder(tableData.schema))

这不是Encoder error while trying to map dataframe row to updated row的重复项,因为我试图删除重复项。

0 个答案:

没有答案