hive の join のバグ・・と思ったらデータとプログラムの不備でした・・・

なんか、FULL OUTER JOIN した時に、JOINできてるはずのレコードなのに片方のレコードのカラムがNULLになってるというのがあった。

http://grokbase.com/t/hive/user/1178em53hc/left-outer-join-and-partitioned-tables

こんなのあったんで、
hive.outerjoin.supports.filters=false
でやってみたが結果は変わらず・・・

よくよく調べてみたら、データとプログラムの不備でした。

  • 片方のデータは空文字が""で入っているのに、もう片方は何故か"null"になっていた。
  • それぞれのデータは時間順でソートした上でデータ加工していたが、タイムスタンプが秒単位で、同じ時刻のログがけっこうあり、そこでソート順が入れ替わって加工結果に差が出てしまっていた
  • それぞれのデータを作成する際のロジックに微妙に違いがあり、結果も微妙にずれていた


ちなみに、これ調べてた時にたまたまこんなのも見つけた。

http://d.hatena.ne.jp/wyukawa/20120328/1332950392

おお!テーブルサイズを見て map side join すべきかどうか自動で判断してくれると!これはやってみようと思う。