1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 您好,
-
无法直接进行控制。Spark使用分区来并行处理你的DataFrame。每个分区写入一个独立的CSV文件。理论上,如果您强制DataFrame只使用 n 个分区,您就可以"控制"文件大小,但这不是推荐的做法,因为重新分区是一种相对昂贵的操作。控制Spark分区的一种方式是通过强制重新分区(强制full reshuffle数据)。另一种减少分区数的方式是使用 coalesce()。coalesce()可以减少分区数(而不是增加),而不必full reshuffle数据。但对于您的问题,这些选项我都不推荐。相反,我会等Spark处理完后再合并这些文件。我们的文档中也提到:"解决小文件问题的一个方法是使用Amazon EMR上的S3DistCP实用程序。您可以使用它将较小的文件合并成较大的对象。您还可以使用S3DistCP以优化的方式从HDFS移动大量的数据到Amazon S3、从Amazon S3到Amazon S3、以及从Amazon S3到HDFS。"
-
这并不是Athena的最优文件大小。您对128MB/256MB范围的理解是正确的。请查看以下关于如何优化Athena和Redshift Spectrum的文档链接。
