pyspark df中多个collect_list中的元素顺序

时间:2019-09-03 13:14:14

标签: apache-spark pyspark

示例数据框:

values = [(1, 111, 211),(2, 121, 221),(1, 112, 212),(3, 131, 231),(4, 141, 241),(3, 132, 232)]
df1 = spark.createDataFrame(values,['id','col1', 'col2'])
df.show()

输出:

+---+----+----+
| id|col1|col2|
+---+----+----+
|  1| 111| 211|
|  2| 121| 221|
|  1| 112| 212|
|  3| 131| 231|
|  4| 141| 241|
|  3| 132| 232|
+---+----+----+

col1和col2上的聚合:

from pyspark.sql.functions import col, lower, collect_list, collect_set

df1.groupby("id").agg(collect_list("col1").alias("col1s"), 
                  collect_list("col2").alias("col2s")).show()

输出:

+---+----------+----------+
| id|     col1s|     col2s|
+---+----------+----------+
|  1|[111, 112]|[211, 212]|
|  3|[131, 132]|[231, 232]|
|  2|     [121]|     [221]|
|  4|     [141]|     [241]|
+---+----------+----------+

这两个集合中元素的顺序相同。 col1s[0]col2s[0]代表同一行中的数据。

但是,如果数据量巨大并且在多个分区之间分割,会发生什么?

0 个答案:

没有答案