我一直在阅读有关该主题的几个问题以及几个论坛,在所有这些问题中,他们似乎都提到从 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 的每日数据集,哪个应该是最佳大小?
任何其他优化技巧将不胜感激!