Spark Java:连接聚合groupBy';s结果

Spark Java:连接聚合groupBy';s结果,java,apache-spark,apache-spark-sql,Java,Apache Spark,Apache Spark Sql,这是我在Java中尝试做的,但在collect_list返回列时,concat_ws要求Seq作为第二个参数的类型,因此无法工作: Dataset aggregatedDF = someDF .groupBy("colA") .agg( concat_ws(",", collect_list(col("colB"))).as("comma_sep_col_b") ); 同样的事情在Scala中也适用: val aggregatedDF = someDF .group

这是我在Java中尝试做的,但在collect_list返回列时,concat_ws要求Seq作为第二个参数的类型,因此无法工作:

Dataset aggregatedDF = someDF
  .groupBy("colA")
  .agg(
      concat_ws(",", collect_list(col("colB"))).as("comma_sep_col_b")
  );
同样的事情在Scala中也适用:

val aggregatedDF = someDF
  .groupBy("colA")
  .agg(
      concat_ws(",", collect_list($"colB")) as "comma_sep_col_b"
  )

您可能想使用该函数

背景:

Scala中
concat_ws
的签名包含变量参数

def concat_ws(sep:String,exprs:Column*):Column

Scala中
Column
类型的变量参数作为
Seq[Column]
处理,Scala编译器提供语法糖管理


请注意,要连接的列必须在转换时提供,而不是在执行时提供
collect_list()
返回一个列,它是一个
ArrayType(…)

在java中很适合我:Dataset aggregatedDF=df.groupBy(“Age”).agg(concat_ws(“,”,collect_list(col(“Wage”)).as(“逗号_sep_col b”);aggregatedDF.show();