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

ni65a41a  于 2021-05-18  发布在  Spark
关注(0)|答案(1)|浏览(346)

我只是使用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)
4sup72z8

4sup72z81#

我在reddit上得到了回答,答案是-https://www.reddit.com/r/apachespark/comments/jqx0te/what_is_the_difference_between_storing_1000_1gb/gbtgdek?utm_source=share&utm_medium=web2x&context=3

相关问题