Impala table 与合并的 parquet 文件的性能问题
Performance issue with Impala table with merged parquet files
这里我使用 python 实用程序使用 Pyarrow 库为单个数据集创建多个镶木地板文件,因为一天的数据集大小很大。这里的 parquet 文件在每个拆分的 parquet 文件中包含 10K 的 parquet 行组,最后我们将拆分文件组合成一个文件以创建一个大的单个 parquet 文件。在这里,我正在创建两个 Impala table,其中包含一个合并文件和多个拆分文件。
当在 Impala table 中加载拆分文件数据并尝试查询它时,结果会在几秒钟内更快,但是当 Impala table 在单个合并的镶木地板文件上创建时.与提到的拆分文件 Impala table 相比,它会产生性能问题。当试图计算 Impala tables.
上的统计数据时,我无法识别这两个 tables 之间的区别
知道为什么多分割镶木地板文件 Impala table 和单个合并分割文件 Impala table.[=12= 之间的性能行为差异]
从历史上看,良好的 Parquet 性能与大型 Parquet 文件相关联。然而,实际上,良好的性能不是大文件的结果,而是大行组的结果(达到 HDFS 块大小)。
将行组一个接一个地放置而不合并它们不会显着改变 Spark 性能,但会使 Impala 慢很多。
主题中的一些 JIRA-s:
除了合并小的 Parquet 文件,你可以做的是将新数据放在一个单独的 table 中,这种格式可能是效率较低的格式(文本文件、Avro 或许多小的 Parquet 文件),然后使用 Hive、Spark 或 Impala 查询 table 的内容并将其批量插入到生产 table 中。这将创建具有有效行组大小的适当大小的 Parquet 文件。
这里我使用 python 实用程序使用 Pyarrow 库为单个数据集创建多个镶木地板文件,因为一天的数据集大小很大。这里的 parquet 文件在每个拆分的 parquet 文件中包含 10K 的 parquet 行组,最后我们将拆分文件组合成一个文件以创建一个大的单个 parquet 文件。在这里,我正在创建两个 Impala table,其中包含一个合并文件和多个拆分文件。
当在 Impala table 中加载拆分文件数据并尝试查询它时,结果会在几秒钟内更快,但是当 Impala table 在单个合并的镶木地板文件上创建时.与提到的拆分文件 Impala table 相比,它会产生性能问题。当试图计算 Impala tables.
上的统计数据时,我无法识别这两个 tables 之间的区别知道为什么多分割镶木地板文件 Impala table 和单个合并分割文件 Impala table.[=12= 之间的性能行为差异]
从历史上看,良好的 Parquet 性能与大型 Parquet 文件相关联。然而,实际上,良好的性能不是大文件的结果,而是大行组的结果(达到 HDFS 块大小)。
将行组一个接一个地放置而不合并它们不会显着改变 Spark 性能,但会使 Impala 慢很多。
主题中的一些 JIRA-s:
除了合并小的 Parquet 文件,你可以做的是将新数据放在一个单独的 table 中,这种格式可能是效率较低的格式(文本文件、Avro 或许多小的 Parquet 文件),然后使用 Hive、Spark 或 Impala 查询 table 的内容并将其批量插入到生产 table 中。这将创建具有有效行组大小的适当大小的 Parquet 文件。