【发布时间】:2018-05-24 11:20:20
【问题描述】:
基本上,我在 spark 数据帧上执行“groupbyKey”,然后执行“mapGroups”转换。 “mapGroups”将生成 Dataset[U],它需要一个“U”类型的编码器。我将每组值转换为 List[Row] 类型,因为我必须传递一个编码器。我可以通过其架构创建“行”类型的编码器,但不知道如何为“列表[行]”数据类型创建编码器。
import sqlContext.implicits._
import org.apache.spark.sql._
import org.apache.spark.sql.catalyst.encoders._
val groupedDataset = df.repartition($"_id")
.groupByKey(row => row.getAs[Long]("_id"))
.mapGroups((key,value) => value.toList)( ??? Here Encoder of List[Row] is Required ???)`
【问题讨论】:
-
这是哪个库?它是特定于 Spark 的编码器,还是我们在谈论通用的东西,例如 JSON 编码?
-
是的,和spark dataset的编码器有关。我添加了一个代码sn-p。
-
你是想模仿
groupBy+agg(collect_list)还是我错过了什么? -
我的用例如下:我有一个数据框,我想组合按键分组的行集并将其存储到任何类型的集合中(可以是列表、数组甚至数据框之类的任何东西或数据集)。
标签: scala apache-spark