带有合并Parquet文件的impala表的性能问题

xxhby3vn  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(608)

在这里,我使用python实用工具为单个数据集使用pyarrow库创建多个Parquet文件,因为一天内数据集的大小非常大。这里Parquet文件包含10kParquet行组在每个分裂Parquet文件,在这里,我们最终是结合成一个文件分裂成一个文件,以创建一个大的单一Parquet文件。这里我创建了两个impala表,其中包含一个合并文件和多个拆分文件。
当在impala表中加载分割文件数据并试图查询它时,结果在几秒钟内就可以得到更快的结果,但当impala表在单个合并的Parquet文件上创建时。它将给性能问题相比,上述剥离文件 Impala 表。当我试图计算 Impala 表的统计数据时,我无法识别这两个表之间的差异。
任何想法,为什么这种性能行为之间的差异为多分裂Parquet文件 Impala 表和单一合并分裂文件 Impala 表。

pdsfdshx

pdsfdshx1#

从历史上看,良好的 parquet 性能与大型 parquet 文件有关。然而,在现实中,好的性能不是大文件的结果,而是大行组的结果(高达hdfs块大小)。
将行组一个接一个地放在一起而不合并它们不会显著改变spark性能,但会使impala的速度慢很多。
主题中的一些jira-s:
parquet -1115
Parquet地板-1381
您可以做的不是合并小Parquet文件,而是将新数据放在一个单独的表中,该表可能采用效率较低的格式(textfile、avro或许多小Parquet文件),然后使用hive、spark或impala查询该表的内容并将其大容量插入生产表。这将创建具有有效行组大小的适当大小的Parquet文件。

相关问题