gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 14:28:57 25 4
gpt4 key购买 nike

我使用的是 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/2014-02-25 和 B 所有天的所有 hdfs 目录,而不仅仅是特定的一天(' 2014-02-25').这需要花费大量时间和更多的 reduce 任务。

我也试过用

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

关于sql - Hive 优化器对于涉及分区表的连接表现不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22066464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com