ハイブでマップ タイプを定義しようとして問題が発生しています。Hive Manualによると、確かにマップ タイプがありますが、残念ながら、それを使用する方法の例はありません。:-(
次の列を持つテーブル(ユーザー)があるとします。
Name Ph CategoryName
この「CategoryName」列には、特定の値のセットがあります。ここで、CategoryName を CategoryID にマップするハッシュテーブルを作成したいと考えています。私はやってみました:
set hivevar:nameToID=map('A',1,'B',2);
2 つの質問があります。
私がそうする
set hivevar:${nameToID['A']}
と、値が1として出力されると思いました。しかし、「$ {hivevar:nameToID ['A']}は未定義です」と表示されますみたいなことをどう言えばいいのかわかりませんが、
select name, ph, ${nameToID[CategoryName]} from users