Spark agg为多个列收集单个列表

tes*_*acc 0 scala group-by apache-spark apache-spark-sql

这是我当前的代码:

pipe_exec_df_final_grouped = pipe_exec_df_final.groupBy("application_id").agg(collect_list("table_name").alias("tables"))
Run Code Online (Sandbox Code Playgroud)

但是,在我的收集列表中,我想要多个列值,因此聚合列将是一个数组数组。当前结果如下:

1|[a,b,c,d]
2|[e,f,g,h]
Run Code Online (Sandbox Code Playgroud)

但是,我还想保留另一个附加到聚集的列(我们称其为“状态”列名称)。所以我的新输出将是:

1|[[a,pass],[b,fail],[c,fail],[d,pass]]
...
Run Code Online (Sandbox Code Playgroud)

我试过collect_list("table_name, status") 但是collect_list只用一个列名。我该如何完成我想做的事情?

Psi*_*dom 6

用于array先将列收集到数组列中,然后应用collect_list

df.groupBy(...).agg(collect_list(array("table_name", "status")))
Run Code Online (Sandbox Code Playgroud)