我有一个已排序的pyspark
dataframe
Col1 Col2
1 A
2 A
3 A
4 B
5 B
6 B
我希望所有的A都在一个文件中,B在另一个文件中,同时保持上面的确切顺序。
当我用下面的语句来写这个:
Data.coalesce(1).write.mode(“overwrite”).partitionBy(“col2”).csv(mypath)
Pyspark
打乱每个单独文件中的数据,从而更改已排序dataframe
的顺序。
有人能帮忙吗?
注意:使用shuffleWithinpartition
可能是不可能的,因为我能够使用复杂的逻辑在上面的表中创建这个排序顺序,而不仅仅是一个列。上表只是一个虚拟示例。
3条答案
按热度按时间1l5u6lss1#
我认为你可以使用重新分配方法而不是合并。repartition允许您指定输出分区的数量,您可以将其设置为Col2中不同值的数量,以确保Col2的每个值都在单独的分区中。下面是一个例子:
a5g8bdjr2#
我认为如果按如下方式使用,数据将被排序,每个文件将在一个文件夹中:
fgw7neuy3#
@ind_1617:
通过在sorted_df上添加coalesce(1),可以看到生成的dataframe在作为CSV文件写入之前被合并到一个分区中。