【发布时间】:2019-06-15 17:12:35
【问题描述】:
我一直在阅读有关此主题的几个问题以及几个论坛,在所有这些问题中,他们似乎都提到从 Spark 输出的每个生成的 .parquet 文件应该是 64MB 或 1GB 大小,但仍然可以除了 HDFS 将它们分成 64MB 块之外,我不知道哪种情况属于每种文件大小以及背后的原因。
我目前的测试场景如下。
dataset
.coalesce(n) # being 'n' 4 or 48 - reasons explained below.
.write
.mode(SaveMode.Append)
.partitionBy(CONSTANTS)
.option("basepath", outputPath)
.parquet(outputPath)
我目前每天处理总计 2.5GB 到 3GB 的数据,这些数据将被拆分并保存到每年的每日存储桶中。 'n' 为 4 或 48 的原因只是为了测试目的,因为我事先知道我的测试集的大小,所以我尽量获得接近 64MB 或 1GB 的数字.在获得需要预先保存的确切大小之前,我还没有实现代码来缓冲所需的数据。
所以我的问题是……
如果我不打算使用 HDFS 并仅从 S3 存储和检索数据,我是否应该考虑这么多的大小?
另外,如果我打算使用 HDFS 来存储生成的 .parquet 文件,那么对于每天大约 10GB最大 的数据集,哪个应该是最佳大小?
非常感谢任何其他优化提示!
【问题讨论】:
标签: apache-spark hdfs parquet