我看到了几个有关将单个文件写入hdfs的问题,看来使用coalesce(1)
就足够了。
例如;
df.coalesce(1).write.mode("overwrite").format(format).save(location)
但是如何指定保存操作后将写入的“确切”文件数量?
所以我的问题是
如果我进行写操作时具有包含100个分区的数据帧,它将写入100个文件吗?
如果我在调用repartition(50)/coalsesce(50)
后进行写操作时具有包含100个分区的数据帧,它将写入50个文件吗?
spark中是否有一种方法可以在将数据帧写入HDFS时指定文件的最终数量?
谢谢
答案 0 :(得分:2)
输出文件的数量通常等于写入任务(分区)的数量。在正常情况下,它不能较小(每个作者都写自己的部分,并且多个任务不能写入同一文件),但是如果格式具有非标准行为或使用partitionBy
,则可以较大。
通常
如果我进行写操作时具有包含100个分区的数据帧,它将写入100个文件吗?
是
如果我在调用repartition(50)/ coalsesce(50)后执行写操作时,如果数据帧包含100个分区,它将写入50个文件吗?
是的。
spark中是否有一种方法可以在将数据帧写入HDFS时指定文件的最终数量?
不。