【问题标题】:Performance issue with Impala table with merged parquet files具有合并镶木地板文件的 Impala 表的性能问题
【发布时间】:2019-06-21 20:52:18
【问题描述】:

在这里,我有 python 实用程序来使用 Pyarrow 库为单个数据集创建多个镶木地板文件,因为一天的数据集大小很大。这里 parquet 文件在每个拆分 parquet 文件中包含 10K parquet 行组,最后我们将拆分文件合并到一个文件中以创建一个大的单个 parquet 文件。在这里,我正在创建两个 Impala 表,其中包含一个合并文件和多个拆分文件。

当在 Impala 表中加载拆分文件数据并尝试查询它时,结果会在几秒钟内变得更快,但是当 Impala 表在单个合并的 parquet 文件上创建时。与提到的拆分文件 Impala 表相比,它会出现性能问题。在尝试计算 Impala 表上的统计信息时,我无法识别这两个表之间的差异。

任何想法,为什么多拆分拼花文件 Impala 表和单个合并拆分文件 Impala 表之间的性能行为差异。

【问题讨论】:

    标签: apache-spark hadoop parquet impala pyarrow


    【解决方案1】:

    从历史上看,良好的 Parquet 性能与大型 Parquet 文件相关联。然而,实际上,良好的性能并不是大文件的结果,而是大行组的结果(最大为 HDFS 块大小)。

    将行组一个接一个地放置而不合并它们不会显着改变 Spark 的性能,但会使 Impala 变慢很多。

    主题中的一些 JIRA-s:

    除了合并小型 Parquet 文件之外,您可以做的是将新数据放在一个单独的表格中,该表格可能采用效率较低的格式(文本文件、Avro 或许多小型 Parquet 文件),然后使用 Hive、Spark 或 Impala查询该表的内容并将其批量插入到生产表中。这将创建具有有效行组大小的适当大小的 Parquet 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      相关资源
      最近更新 更多