首页 文章

如何创建List [Row]类型的编码器以在spark中创建数据集[List [Row]]?

提问于
浏览
0

基本上,我正在执行'groupbyKey',然后在spark数据帧上执行'mapGroups'转换 . 'mapGroups'将产生数据集[U],这需要一个类型为'U'的编码器 . 我正在将每组值转换为List [Row]类型,因为我必须传递一个Encoder . 我能够通过其模式创建类型为'Row'的编码器,但不知道如何为'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 ???)`

1 回答

  • 0

    你可以使用Seq和import spark.implicits._但是你不需要实现它,如果这是你使用的情况你可以使用

    df.groupBy("_id").agg(collect_list("the column you want to collect of values"))

相关问题