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 はバーテーブルにのみ適用され、一部と見なされるべきではありません結合の。
ハイブには、テーブル フィールドに等しくない条件を設定するための制限はありません。

于 2012-08-13T19:52:18.460 に答える
0

Hive での外部結合の結果が間違っている場合があります。私はそれに取り組んでいます。

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

于 2012-08-14T07:17:12.513 に答える