基本上,我正在执行'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 回答
你可以使用Seq和import spark.implicits._但是你不需要实现它,如果这是你使用的情况你可以使用
df.groupBy("_id").agg(collect_list("the column you want to collect of values"))