2

我知道 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 是否确认这种类型的查询会产生错误的结果?

为任何帮助干杯,马特

4

2 回答 2

1

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

于 2012-08-13T19:52:18.460 回答
0

蜂巢中外部连接的结果有时是错误的。我在做这个工作。

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

于 2012-08-14T07:17:12.513 回答