Spark如何在写入时/写入后为DataFrame指定结果文件数

时间:2018-06-29 09:10:04

标签: scala apache-spark dataframe hdfs

我看到了几个有关将单个文件写入hdfs的问题,看来使用coalesce(1)就足够了。

例如;

df.coalesce(1).write.mode("overwrite").format(format).save(location)

但是如何指定保存操作后将写入的“确切”文件数量?

所以我的问题是

如果我进行写操作时具有包含100个分区的数据帧,它将写入100个文件吗?

如果我在调用repartition(50)/coalsesce(50)后进行写操作时具有包含100个分区的数据帧,它将写入50个文件吗?

spark中是否有一种方法可以在将数据帧写入HDFS时指定文件的最终数量?

谢谢

1 个答案:

答案 0 :(得分:2)

输出文件的数量通常等于写入任务(分区)的数量。在正常情况下,它不能较小(每个作者都写自己的部分,并且多个任务不能写入同一文件),但是如果格式具有非标准行为或使用partitionBy,则可以较大。

通常

  

如果我进行写操作时具有包含100个分区的数据帧,它将写入100个文件吗?

  

如果我在调用repartition(50)/ coalsesce(50)后执行写操作时,如果数据帧包含100个分区,它将写入50个文件吗?

是的。

  

spark中是否有一种方法可以在将数据帧写入HDFS时指定文件的最终数量?

不。