【问题标题】:hive query performance is bad蜂巢查询性能很差
【发布时间】:2015-09-04 12:53:34
【问题描述】:

我将在 HIVE 中加入 3 个巨大的表(十亿行表)。收集了所有统计信息,但性能仍然很差(查询需要 40 分钟)。

我可以在 HIVE 提示中设置任何参数以获得更好的性能吗?

当我尝试执行时,我会看到类似

的信息
Sep 4, 2015 7:40:23 AM INFO: parquet.hadoop.ParquetInputFormat: Total input paths to process : 1
Sep 4, 2015 7:40:23 AM INFO: parquet.hadoop.ParquetFileReader: reading another 1 footers

所有表都是在 BigSql 中创建的,存储参数为“STORED AS PARQUETFILE”

如何在 HIVE 查询运行时隐藏作业进度详细信息?

关于HIVE版本

hive> set system:sun.java.command;
system:sun.java.command=org.apache.hadoop.util.RunJar /opt/ibm/biginsights/hive/lib/hive-cli-0.12.0.jar org.apache.hadoop.hive.cli.CliDriver -hiveconf hive.aux.jars.path=file:///opt/ibm/biginsights/hive/lib/hive-hbase-handler-0.12.0.jar,file:///opt/ibm/biginsights/hive/lib/hive-contrib-0.12.0.jar,file:///opt/ibm/biginsights/hive/lib/hbase-client-0.96.0.jar,file:///opt/ibm/biginsights/hive/lib/hbase-common-0.96.0.jar,file:///opt/ibm/biginsights/hive/lib/hbase-hadoop2-compat-0.96.0.jar,file:///opt/ibm/biginsights/hive/lib/hbase-prefix-tree-0.96.0.jar,file:///opt/ibm/biginsights/hive/lib/hbase-protocol-0.96.0.jar,file:///opt/ibm/biginsights/hive/lib/hbase-server-0.96.0.jar,file:///opt/ibm/biginsights/hive/lib/htrace-core-2.01.jar,file:///opt/ibm/biginsights/hive/lib/zookeeper-3.4.5.jar,file:///opt/ibm/biginsights/sheets/libext/piggybank.jar,file:///opt/ibm/biginsights/sheets/libext/pig-0.11.1.jar,file:///opt/ibm/biginsights/sheets/libext/avro-1.7.4.jar,file:///opt/ibm/biginsights/sheets/libext/opencsv-1.8.jar,file:///opt/ibm/biginsights/sheets/libext/json-simple-1.1.jar,file:///opt/ibm/biginsights/sheets/libext/joda-time-1.6.jar,file:///opt/ibm/biginsights/sheets/libext/bigsheets.jar,file:///opt/ibm/biginsights/sheets/libext/bigsheets-serdes-1.0.0.jar,file:///opt/ibm/biginsights/lib/parquet/parquet-mr/parquet-column-1.3.2.jar,file:///opt/ibm/biginsights/lib/parquet/parquet-mr/parquet-common-1.3.2.jar,file:///opt/ibm/biginsights/lib/parquet/parquet-mr/parquet-encoding-1.3.2.jar,file:///opt/ibm/biginsights/lib/parquet/parquet-mr/parquet-generator-1.3.2.jar,file:///opt/ibm/biginsights/lib/parquet/parquet-mr/parquet-hadoop-bundle-1.3.2.jar,file:///opt/ibm/biginsights/lib/parquet/parquet-mr/parquet-hive-bundle-1.3.2.jar,file:///opt/ibm/biginsights/lib/parquet/parquet-mr/parquet-thrift-1.3.2.jar,file:///opt/ibm/biginsights/hive/lib/guava-11.0.2.jar

【问题讨论】:

  • 如果你在所有 3 个表中加入 100% 的记录,那么统计数据不会有太大的不同。 40 分钟的大规模 Hive 查询并不令人惊讶。一些兴趣点可能是:MapReduce 或 Tez?什么样的加入(参见EXPLAIN)?每个连接步骤有多少个映射器(参见 MR 或 Tez 日志)?大量数据倾斜(参见一些映射器比其他映射器咀嚼更多数据并减慢步骤)?压缩中间结果?等等等等等等等等等等等等。
  • 当我使用 STORED PARAMETER 作为 ORC 而不是 PARQUET 时,我得到了非常好的性能提升。你能告诉我为什么会这样吗?
  • 为什么选择 Hive+Parquet?因为 Cloudera 营销炒作?请参阅我对其他帖子(和帖子顺便说一句)stackoverflow.com/questions/32350664/… 的评论

标签: performance hive


【解决方案1】:

Koushik - This 一个月前我问的问题会让您深入了解 ORC 与 Parquet 的性能。

让我问这个问题!你的数据结构是什么?这是嵌套的还是扁平的?如果这是一个更扁平的数据,例如可以是从 RDBMS 中提取的数据,ORC 更好,因为它在数据旁边存储了轻量级索引,并且可以更快地检索数据。

希望对你有帮助

【讨论】:

  • 数据为扁平结构数据。原始表实际上是从 bigsql 创建的,并且是 parquet 格式。总共有 18 个这样的表正在连接(其中 5 个是大表)。如果我使用这些拼花结构并将 18 个表的连接分解为多步骤过程,那么填充一个非规范化的扁平表总共需要大约 6 个小时。
  • 如果我必须使用 ORC 格式,那么首先我必须为所有 18 个表创建 ORC 表并填充这些表,然后只有我能够在我的多步连接过程中使用这些 ORC 表.所以添加任务是从 parquet 填充第一个 ORC 表。我认为与现在相比,该过程的时间不会减少太多(考虑到填充 ORC 表的额外步骤)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多