Posted at

Hive0.13のUniquejoinの動作について

More than 1 year has passed since last update.

HiveにUniqueJoinなるものがある。

Documentに見当たらなかったが、Jiraによると0.5.0から入っていることがわかる。

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

クエリ例:

SELECT a.id,b.id,c.id FROM UNIQUEJOIN

PRESERVE test_a a(a.id),
PRESERVE test_b b(b.id),
PRESERVE test_c c(c.id)

test_a:

test_b:

test_c:

クエリ結果:

クエリ結果から判断すると、

PRESERVE内で指定したカラムの値の全組み合わせが出すために使える。

そのため、事前にキーをユニークにしておけば、各テーブルの歯抜けになっているキーを算出できる。

制限: test_aの部分はサブクエリにはできない(少なくともHive0.13)。

一点よくわからないのが、下のFull Outer Joinで同じ結果を出せるように思うのだけれども、これを使うメリットは他に何かあるのか・・・

select a.id, b.id, c.id

from test_a a full outer join test_b b on a.id = b.id
full outer join test_c c on a.id = c.id