我正在尝试重新分区和保存我的Dataframe,其中包含约2000万条记录到多个csv文件。 df.repartition('col1','col2','col3').write.csv(path)
我想把它保存到许多csv文件有独特的组合 ('col1', 'col2', 'col3')
,有时可能在4000左右。
我尝试过的方法:
我尝试显式地将shuffle分区值设置为4000 spark.conf.set("spark.sql.shuffle.partitions", 4000)
尝试执行分组方式并将分区号设置为组数。 partitioned = final_df.groupBy('col1','col2','col3').count()
partition_no = partitioned.count() spark.conf.set("spark.sql.shuffle.partitions", 4000)
两种方法都产生了相同的结果。文件数小于分区数。如何确保保存的csv文件数与分区数相同?
感谢您的帮助。
1条答案
按热度按时间vxf3dgd41#
如果csv可以在磁盘上进行分区,则可以这样做:
它将在磁盘上生成如下csv:
然而,像这样的嵌套目录通常并不理想。另一个选项是创建一个新列,它是col1-col3的串联,然后使用
repartition
以及partitionBy
在那个新专栏上。它将压平上面列出的目录结构。