应用 PySpark dropDuplicates 方法会打乱数据框的排序
Applying PySpark dropDuplicates method messes up the sorting of the data frame
我不确定为什么会这样,但是当我将 dropDuplicates
应用于已排序的数据框时,排序顺序被打乱了。看下面两个table的对比。
后面的table是sorted_df.show()
的输出,其中排序是有序的
+----------+-----------+
|sorted_col|another_col|
+----------+-----------+
| 1| 1|
| 8| 5|
| 15| 1|
| 19| 9|
| 20| 7|
| 27| 9|
| 67| 8|
| 91| 9|
| 91| 7|
| 91| 1|
+----------+-----------+
后面的table是sorted_df.dropDuplicates().show()
的输出,排序不对了,虽然是同一个数据框
+----------+-----------+
|sorted_col|another_col|
+----------+-----------+
| 27| 9|
| 67| 8|
| 15| 1|
| 91| 7|
| 1| 1|
| 91| 1|
| 8| 5|
| 91| 9|
| 20| 7|
| 19| 9|
+----------+-----------+
谁能解释为什么这种行为会持续存在,以及如何在应用 dropDuplicates
的情况下保持相同的排序顺序?
Apache Spark 版本 3.1.2
dropDuplicates
涉及一个shuffle
。因此,订购中断。
我不确定为什么会这样,但是当我将 dropDuplicates
应用于已排序的数据框时,排序顺序被打乱了。看下面两个table的对比。
后面的table是sorted_df.show()
的输出,其中排序是有序的
+----------+-----------+
|sorted_col|another_col|
+----------+-----------+
| 1| 1|
| 8| 5|
| 15| 1|
| 19| 9|
| 20| 7|
| 27| 9|
| 67| 8|
| 91| 9|
| 91| 7|
| 91| 1|
+----------+-----------+
后面的table是sorted_df.dropDuplicates().show()
的输出,排序不对了,虽然是同一个数据框
+----------+-----------+
|sorted_col|another_col|
+----------+-----------+
| 27| 9|
| 67| 8|
| 15| 1|
| 91| 7|
| 1| 1|
| 91| 1|
| 8| 5|
| 91| 9|
| 20| 7|
| 19| 9|
+----------+-----------+
谁能解释为什么这种行为会持续存在,以及如何在应用 dropDuplicates
的情况下保持相同的排序顺序?
Apache Spark 版本 3.1.2
dropDuplicates
涉及一个shuffle
。因此,订购中断。