你可以试试这个,collect list会收集k1、k2对应的所有值是否可以重复多次。
我们可以这样做:-
from pyspark.sql 导入函数为 F
n = sqlContext.createDataFrame([
["k1", "v1"],
["k1", "v2"],
["k1", "v3"],
["k1", "v1"],
["k2", "v1"],
["k2", "v2"],
["k2", "v3"],
["k2", "v1"],
], ["col1", "col2"])
n.show()
+----+----+
|col1|col2|
+----+----+
| k1| v1|
| k1| v2|
| k1| v3|
| k1| v1|
| k2| v1|
| k2| v2|
| k2| v3|
| k2| v1|
+----+----+
n.groupby("col1").agg(F.collect_list("col2")).show()
+----+------------------+
|col1|collect_list(col2)|
+----+------------------+
| k1| [v1, v2, v3, v1]|
| k2| [v1, v2, v3, v1]|
+----+------------------+
如果需要删除重复项:-
n.groupby("col1").agg(F.collect_set("col2")).show()
+----+-----------------+
|col1|collect_set(col2)|
+----+-----------------+
| k1| [v1, v2, v3]|
| k2| [v1, v2, v3]|
+----+-----------------+