【发布时间】:2021-01-31 07:35:45
【问题描述】:
是否有类似于 collect_list 或 collect_set 的函数将一列地图聚合到(分组的)pyspark 数据帧中的单个地图中?例如,此函数可能具有以下行为:
>>>df.show()
+--+---------------------------------+
|id| map |
+--+---------------------------------+
| 1| Map(k1 -> v1)|
| 1| Map(k2 -> v2)|
| 1| Map(k3 -> v3)|
| 2| Map(k5 -> v5)|
| 3| Map(k6 -> v6)|
| 3| Map(k7 -> v7)|
+--+---------------------------------+
>>>df.groupBy('id').agg(collect_map('map')).show()
+--+----------------------------------+
|id| collect_map(map) |
+--+----------------------------------+
| 1| Map(k1 -> v1, k2 -> v2, k3 -> v3)|
| 2| Map(k5 -> v5)|
| 3| Map(k6 -> v6, k7 -> v7)|
+--+----------------------------------+
使用其他 collect_ 聚合之一和 udf 产生所需结果可能不会太难,但似乎这样的东西应该已经存在。
【问题讨论】:
标签: pyspark spark-dataframe pyspark-sql