Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark如何在写入时/写入后为数据帧指定结果文件的数量_Scala_Apache Spark_Dataframe_Hdfs - Fatal编程技术网

Scala Spark如何在写入时/写入后为数据帧指定结果文件的数量

Scala Spark如何在写入时/写入后为数据帧指定结果文件的数量,scala,apache-spark,dataframe,hdfs,Scala,Apache Spark,Dataframe,Hdfs,我看到了几个关于将单个文件写入hdfs的q/a,似乎使用coalesce(1)就足够了 例如, 但如何指定保存操作后将写入的文件的“确切”数量 所以我的问题是, 如果我有数据帧,它由100个分区组成,当我进行写操作时,它会写100个文件吗 如果在调用repartition(50)/coalsesce(50)后进行写操作时,数据帧由100个分区组成,它会写50个文件吗 spark中是否有一种方法允许在将数据帧写入HDFS时指定生成的文件数 谢谢输出文件的数量通常等于写入任务(分区)的数量。在正常情

我看到了几个关于将单个文件写入hdfs的q/a,似乎使用
coalesce(1)
就足够了

例如,

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

所以我的问题是,

如果我有数据帧,它由100个分区组成,当我进行写操作时,它会写100个文件吗

如果在调用
repartition(50)/coalsesce(50)
后进行写操作时,数据帧由100个分区组成,它会写50个文件吗

spark中是否有一种方法允许在将数据帧写入HDFS时指定生成的文件数


谢谢

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

通常

如果我有数据帧,它由100个分区组成,当我进行写操作时,它会写100个文件吗

如果我在调用repartition(50)/coalsesce(50)后进行写操作时,数据帧由100个分区组成,它会写50个文件吗

是的

spark中是否有一种方法允许在将数据帧写入HDFS时指定生成的文件数


否。

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

通常

如果我有数据帧,它由100个分区组成,当我进行写操作时,它会写100个文件吗

如果我在调用repartition(50)/coalsesce(50)后进行写操作时,数据帧由100个分区组成,它会写50个文件吗

是的

spark中是否有一种方法允许在将数据帧写入HDFS时指定生成的文件数


否。

请注意,我们可以设置自Spark 2.2以来的
maxRecordsPerFile
。使用此选项,文件的数量可能不同于分区的数量()注意,我们可以设置自Spark 2.2以来的
maxRecordsPerFile
。使用此选项,文件的数量可能不同于分区的数量()
df.coalesce(1).write.mode("overwrite").format(format).save(location)