文件名匹配与文件名匹配之间的性能比较。分区修剪

Performance comparison between Filename Matching Vs. Partition Pruning

我遇到了一个问题,即每 15 分钟创建一次文件,因此一个月内我将拥有约 2880 个文件。一年后我将拥有 35,000 个文件!压缩可能是一个选项,这意味着我每小时有 1 个镶木地板文件 = 8760 个文件!

但是我想知道 比较文件名 使用 "$path" 与使用 分区 有何不同?分区修剪在单个线程中完成,不分布在 Hadoop 集群上。那么如果我有35,000个文件分成年=????/天=365/小时=24/4个文件然后,比较文件名的性能是否与使用分区修剪相同?

PS:我知道我可以存档旧文件。

Athena Optimizations

处理拆分有一些相当大的开销,所以在协调器上过滤掉它们实际上总是更好。出于同样的原因,你想避免大量的小文件(我不知道你每 15 分钟的文件是否很小)。

现在,分区修剪和 "$path" 条件都在协调器上进行评估(如果可能,例如 "$path" 条件不使用其他列等),因此它们的行为应该相同。

另请注意,拥有大量小分区可能会导致代码的某些区域出现性能问题(没有具体说明,但过去不止一次碰巧出现过这个问题)。因此,无论如何你可能想要更大的分区。