Hiveメモ
HiveのTipsかもしれないものを2つ知ったのでいちおうメモっとく。何でこうなるかはわかってない。バージョンは0.6ね。
まず1つめ
aaaとbbbという2つのテーブルがあって、それぞれcolumn1というパーティションキーがあって、
このキーで結合しつつcolumn1が1なものを求めたい
っていう場合は
select * from aaa a join bbb b on a.column1 = b.column1 and a.column1 = 1 ;
だとMap数が膨大になるが、
select * from aaa a join bbb b on a.column1 = b.column1 and a.column1 = 1 and b.column1 = 1 ;
とすれば大丈夫。
2つめ
aaaというテーブルがあってcolumn1カラムの値がhogeな件数を求めたい
って場合は
select count(*) from aaa where column1 = "hoge";
だとcolumn1がnullのときもカウントされてしまう。
select count(column1) from aaa where column1 = "hoge";
とか
select count(1) from aaa where column1 = "hoge";
ならOK
下記のようにやった場合と件数が違くて変だなーって思って気づいた。
select column1, count(*) from aaa group by column1
count(*)は使わずにcount(1)使ったほうが無難かも
いじょ