Spark-Java:连接汇总的groupBy的结果

时间:2019-11-18 06:42:58

标签: java apache-spark apache-spark-sql

这是我要在Java中尝试执行的操作,但是由于concat_ws要求Seq作为第二个参数的类型,而collect_list返回Column:

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"
  )

1 个答案:

答案 0 :(得分:1)

您可能想使用array_join()函数。

背景

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

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

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

请注意,要串联的列必须在转换时间而不是执行时间提供。 collect_list()返回一列,即ArrayType(...)