簡體   English   中英

Spark DataFrame,如何聚合列序列?

[英]Spark DataFrame, how to to aggregate sequence of columns?

我有一個數據框,並且可以使用靜態列名稱進行聚合,即:

df.groupBy("_c0", "_c1", "_c2", "_c3", "_c4").agg(
concat_ws(",", collect_list("_c5")),
concat_ws(",", collect_list("_c6")))

並且它工作正常,但是如果我得到groupby列的序列和聚合列的序列怎么辦?

換句話說,如果我有

val toGroupBy = Seq("_c0", "_c1", "_c2", "_c3", "_c4")
val toAggregate = Seq("_c5", "_c6")

並想要執行以上操作?

要使用序列執行相同的groupBy和聚合,您可以執行以下操作:

val aggCols = toAggregate.map(c => expr(s"""concat_ws(",", collect_list($c))"""))
df.groupBy(toGroupBy.head, toGroupBy.tail:_*).agg(aggCols.head, aggCols.tail:_*)

expr函數采用一個表達式並將其求值到列中。 然后,將groupByagg的varargs變體應用於列列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM