【问题标题】:how can I group rows from a DataFrame into a single row separated by a delimiter Scala Spark?如何将 DataFrame 中的行分组为由分隔符 Scala Spark 分隔的单行?
【发布时间】:2021-08-14 16:58:10
【问题描述】:

我有这个 Spark 的 DataFrame:

+-------------+
|father|child |
+-------------+
|Aaron |Adam  |
|Aaron |Berel |
|Aaron |Kasper|
|Levi  |Saul  |
|Levi  |Tiger |
+-------------+

如何按父母分组并将所有数据放在一个带分隔符的字段中?

我想要的输出是:

+------------------------+
|union_all_name_by_father|
+------------------------+
|Aaron;Adam;Berel;Kasper |
|Levi;Saul;Tiger         |
+------------------------+

【问题讨论】:

  • 在Scala里,我什么都没试过,不知道该走哪条路

标签: scala dataframe apache-spark pyspark


【解决方案1】:

您可以使用groupby,然后使用concat_ws

val df2 = df.groupBy("father").agg(
    concat_ws(";", collect_list(col("child"))).as("col2")
).select(concat_ws(";", col("father"), col("col2")).as("union_all_name_by_father"))

df2.show(false)
+------------------------+
|union_all_name_by_father|
+------------------------+
|Aaron;Adam;Berel;Kasper |
|Levi;Saul;Tiger         |
+------------------------+

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    相关资源
    最近更新 更多