在这里,我有python实用程序来创建多个拼花文件使用Py箭头库单个数据集作为数据集的大小是巨大的一天。这里拼花文件包含10K拼花行组在每个拆分拼花文件,在这里最后我们将拆分文件组合成一个文件来创建一个大的单个拼花文件。在这里,我创建了两个Impala表与合并文件和多个拆分文件。
当拆分文件数据加载到Impala表并试图查询它的结果是在几秒钟内更快,但是当Impala表在单个合并拼花文件上创建时。与提到的拆分文件Impala表相比,它会带来性能问题。当试图计算Impala表上的统计数据时,我无法识别这两个表之间的差异。
任何想法,为什么这种性能行为在多拆分拼花文件Impala表和单个合并拆分文件Impala表之间存在差异。
从历史上看,良好的Parquet性能一直与大Parquet文件相关联。然而,实际上,良好的性能不是大文件的结果,而是大行组的结果(最大HDFS块大小)。
将行组一个接一个地放置而不合并它们不会显着改变Spark性能,但会使Impala慢得多。
主题中的一些JIRA-s:
您可以做的不是合并小Parquet文件,而是将新数据放在一个单独的表中,该表可能采用效率较低的格式(文本文件、Avro或许多小Parquet文件),然后使用Hive、Spark或Impala查询该表的内容并将其批量插入到生产表中。这将创建具有有效行组大小的适当大小的Parquet文件。