【问题标题】:HiveQL Inequality JoinHiveQL 不等式连接
【发布时间】:2012-08-13 10:32:32
【问题描述】:

我知道 Hive for Hadoop 不支持不等式连接。但是,我有一个查询似乎运行正常。至于结果是否正确,我很怀疑,因为我有一位同事与我分享了这个结果,他发现它没有产生正确的结果。

这里是:

select foo.id, count(foo.*) as foo_vol, count(bar.*) as bar_vol 
from foo
 left outer outer join bar
  on foo.id = bar.id
  and (bar.f2 in (x, y, z)) = FALSE
group by foo.id

任何人对为什么这解释和运行正常有任何想法?不等式连接的问题实际上是否与标准是否使用连接双方的字段有关? FB / apache 确认过这种类型的查询会产生错误的结果吗?

为任何帮助干杯, 马特

【问题讨论】:

    标签: join hadoop hive inequality


    【解决方案1】:

    据我所知,您的查询确实是 eque join : foo.id = bar.id
    条件: (bar.f2 in (x, y, z)) = FALSE 仅应用于条形表,不应被视为连接的一部分。
    在 Hive 中对表字段设置不相等条件没有任何限制。

    【讨论】:

    • 谢谢大卫,是的,我明白你的意思,因为该语句仅适用于 bar...我猜如果表达式类似于 foo.id
    【解决方案2】:

    在 hive 中外部连接的结果有时是错误的。我正在努力。

    https://issues.apache.org/jira/browse/HIVE-3381

    【讨论】:

    • 太好了,谢谢纳维斯。顺便说一句,我正在使用 Hive 版本 0.7.1 和 Hadoop 0.20.2 (CDH3)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2013-10-03
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    相关资源
    最近更新 更多