首页 > 解决方案 > 按字段对 Spark 数据帧进行重复数据删除

问题描述

假设我有以下火花数据框

 -----------------------
 | geohash | timehash  |
 ----------------------- 
 | x       | y         |
 -----------------------
 | x       | z         |
 -----------------------
 | z       | y         |

是否可以通过 geohash 字段对其进行重复复制并像这样收集第二个字段的结果?:

 -----------------------
 | geohash | timehash  |
 ---------------------- 
 | x       | y , z     |
 -----------------------
 | z       | y         |

标签: apache-sparkapache-spark-sql

解决方案


您可以使用groupByaggregate功能来实现这一点,如下所示

df.groupBy("geohash").agg(collect_list("timehash")).alias("timehash").show

//output
+-------+--------+
|geohash|timehash|
+-------+--------+
|      x|  [y, z]|
|      z|     [y]|
+-------+--------+

推荐阅读