繁体   English   中英

Hive优化器对于涉及分区表的连接表现不佳

[英]Hive optimizer not performing well for joins involving partitioned tables

我使用的是Hive版本0.7.1-cdh3u2

我有两个大桌子(比方说)A和B,都是按天划分的。 我正在运行以下查询

select col1,col2
from A join B on (A.day=B.day and A.key=B.key)
where A.day='2014-02-25'

当我查看map reduce任务的xml文件时,我发现mapred.input.dir包含A的所有日期的A / 2014-02-25和所有hdfs目录,而不仅仅是特定日期('2014-02) -25' )。 这需要花费大量时间和更多的减少任务。

我也试过用

select col1,col2
from A join B on (A.day=B.day and A.key=B.key and A.day='2014-02-25'
                  and B.day='2014-02-25')

此查询执行速度更快,并且只有mapred.input.dir中所需的hdfs目录

我有以下问题。

  1. 不应该让hive优化器足够聪明,以便两个查询以完全相同的方式运行吗?
  2. 应该是一个优化的方法来运行hive查询来连接这些表与多个键上的分区?
  3. 在join on子句中使用涉及分区的条件和在性能方面使用where子句有什么区别?

您需要在JOIN子句或WHERE子句中显式提及条件,即分区目录。 因此它只会处理所需的分区,从而提高性能。

你可以参考这个链接: Apache Hive LanguageManual

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM