AWS Athena - 合并小的镶木地板文件还是保留它们?

AWS Athena - merge small parquet files or leave them?

我有很多通过 AWS Glue 读取到 Athena 中的小镶木地板文件。我知道小的 parquet 文件(由于日志输出它们的方式,每个 35k 左右)并不理想,但是一旦将它们读入数据目录,它就不再重要了吗?

换句话说,我是否应该在加载到 Athena 之前完成将所有小镶木地板文件合并为更理想大小的文件的练习?

即使在数据目录中注册了小文件后,您仍要为小文件支付费用。当您基于许多小文件查询 table 时,Athena 必须更加努力地收集和流式传输它需要扫描的所有必要数据,以便回答您的​​查询。尽管您最终扫描的数据量可能相当,但在更块状的文件上执行此操作会减少查询引擎的开销 (presto)。

参考:https://docs.aws.amazon.com/athena/latest/ug/performance-tuning.html - 注意它是如何提到当你有很多小文件时,S3 节流也可能会影响你

此外,对于 parquet 文件,文件可能有一个索引,查询引擎可以使用该索引跳过扫描文件,或跳转到特定文件中的正确位置。我相信这种索引的有效性会在许多小文件上降低。

通过 CTAS 语句将小文件转换为大文件非常容易,我建议这样做。根据我的经验,我可以发现查询对我的批处理文件的执行速度更快。