我有一个问题,有文件正在创建每15分钟,所以在一个月内,我将有约2880个文件。一年后我将有35000个文件!压缩可能是一个选项,这将意味着我有一个Parquet文件每小时=8760文件!
不过,我想知道如何比较文件名使用 "$path"
与使用分区不同?分区修剪是在一个线程中完成的,不分布在hadoop集群上。因此,如果我将35000个文件分为年=????/天=365/小时=24/4个文件,那么比较文件名的性能是否与使用分区修剪相同?
ps:我知道我可以存档旧文件。
雅典娜优化
我有一个问题,有文件正在创建每15分钟,所以在一个月内,我将有约2880个文件。一年后我将有35000个文件!压缩可能是一个选项,这将意味着我有一个Parquet文件每小时=8760文件!
不过,我想知道如何比较文件名使用 "$path"
与使用分区不同?分区修剪是在一个线程中完成的,不分布在hadoop集群上。因此,如果我将35000个文件分为年=????/天=365/小时=24/4个文件,那么比较文件名的性能是否与使用分区修剪相同?
ps:我知道我可以存档旧文件。
雅典娜优化
1条答案
按热度按时间to94eoyn1#
处理分割有相当大的开销,所以实际上最好在协调器上过滤掉它们。出于同样的原因,您希望避免大量的小文件(我不知道您的每15分钟文件是否很小)。
现在,分区修剪和
"$path"
两种情况都在协调器上进行评估(如果可能,例如。"$path"
条件不使用其他列等),因此它们的行为应该相同。还要注意的是,拥有大量的小分区可能会导致代码的某些区域出现性能问题(没有什么具体的问题,但在过去这是一个不止一次的问题)。因此,您可能希望有更大的分区。