Apache spark 在HDFS中存储1000 1GB文件和1 1000GB文件以供Spark进一步使用有什么区别?哪一个更好,如果有的话,为什么?

Apache spark 在HDFS中存储1000 1GB文件和1 1000GB文件以供Spark进一步使用有什么区别?哪一个更好,如果有的话,为什么?,apache-spark,hdfs,Apache Spark,Hdfs,我只是使用Spark将数据从Mongo传输到HDFS,按某个字段对其进行分区,然后按该字段将其存储在不同的文件夹中。我试图理解我是否应该指定“maxRecordsPerFile”,或者以某种方式将我的作业写入的一个大文件分割到每个文件夹,或者我应该只为每个文件夹写入一个文件。 我知道HDFS块的概念,HDFS会将大文件分割成块等等。 我想知道读取1个大文件和1000个不太大(但仍然比块大小大很多)的文件之间是否有任何区别。 代码示例: import org.apache.spark.sql.fu

我只是使用Spark将数据从Mongo传输到HDFS,按某个字段对其进行分区,然后按该字段将其存储在不同的文件夹中。我试图理解我是否应该指定“maxRecordsPerFile”,或者以某种方式将我的作业写入的一个大文件分割到每个文件夹,或者我应该只为每个文件夹写入一个文件。 我知道HDFS块的概念,HDFS会将大文件分割成块等等。 我想知道读取1个大文件和1000个不太大(但仍然比块大小大很多)的文件之间是否有任何区别。 代码示例:

import org.apache.spark.sql.functions._
dataset
.withColumn(YEAR_COLUMN, year(col(DATE_COLUMN)))
.withColumn(MONTH_COLUMN, month(col(DATE_COLUMN)))
.write
//.option("maxRecordsPerFile", 100000) or some other number to make files around 1GB
.mode(SaveMode.Append)
.partitionBy(YEAR_COLUMN, MONTH_COLUMN)
.json(OUTPUT_PATH)

我在reddit上得到了回答,这是答案-

我在reddit上得到了回答,这是答案-

这回答了你的问题吗?你好@suj1th,不完全是。这个问题是关于块大小左右的文件和1GB左右的文件之间的差异(哪个更好)。第一个答案只是说目标是1GB和压缩。第二个答案解释了为什么1GB比较小的文件更适合拼花地板。但是,与1GB拼花相比,10GB拼花文件的缺点是什么呢。如果我错了,请纠正我,但我在答案中看不到这一点。这能回答你的问题吗?你好@suj1th,不完全是。这个问题是关于块大小左右的文件和1GB左右的文件之间的差异(哪个更好)。第一个答案只是说目标是1GB和压缩。第二个答案解释了为什么1GB比较小的文件更适合拼花地板。但是,与1GB拼花相比,10GB拼花文件的缺点是什么呢。如果我错了,请纠正我,但我在答案中看不到这一点。