这是我要在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"
)
答案 0 :(得分:1)
您可能想使用array_join()
函数。
背景:
Scala中concat_ws
的签名包含可变参数
def concat_ws(sep: String, exprs: Column*): Column
Scala中类型为Column
的变量参数被处理为Seq[Column]
,而Scala编译器提供了语法糖管理。
请注意,要串联的列必须在转换时间而不是执行时间提供。 collect_list()
返回一列,即ArrayType(...)
。