Hue/Hiveにてデフォルトでクラスパスに追加されるjarを設定する

hadoop
この記事は約3分で読めます。

Cloudera Managerを使ってHueをインストールして,SerDeありのテーブルを作成した際にMetastore Managerの画面でテーブルのサンプルを閲覧するとExceptionになってしまう。

Hive CLIでテーブルを作成し,HueのMetastore Managerのテーブルのサンプルタブを押すとおそらくサンプルを取得するクエリが投げられると思うのだけど,SerDe有りのテーブルの場合,add jarできないのでエラーになってしまう。ちなみに,Beeswax(Hive UI)上でadd jarしてクエリを投げるとサンプルも正常に閲覧できる。セッションが残っている間は有効なのだろうか。

ということで,Beeswaxでデフォルトでjarをクラスパスに設定できないかと。jarの指定方法には,hive-conf/hive-site.xmlhive.aux.jars.pathと環境変数HIVE_AUX_JARS_PATHがあるが,参考リンクを見ると,

Beeswax: there is a workaround with the HIVE_AUX_JARS_PATH : https://issues.cloudera.org/browse/HUE-1127

HiveServer2 supports a hive.aux.jars.path property in the hive-site.xml. HiveServer2 does not support a .hiverc and Hue is looking at providing an equivalent at some point: https://issues.cloudera.org/browse/HUE-1066

by http://stackoverflow.com/questions/19135869/best-place-for-json-serde-jar-in-cdh-hadoop-for-use-with-hive-hue-mapreduce

と書かれており,Beeswaxではhive-env.sh方式と同様にHIVE_AUX_JARS_PATHを使って,HiveServer2はhive.aux.jars.pathを使って指定できるみたいだった。けれど,Cloudera ManagerのBeeswaxで安全バルブを探してみたけど見つからない。。そこで,hive-site.xmlの安全バルブに試しに以下のように指定してみたところ上手くいった。どうやらBeeswaxサービス起動時にここをみているようだ。

パスの指定は,ローカルファイルシステムでディレクトリでなくjarの絶対パスの指定で上手くいった。HDFS上のパスやローカルファイルシステム上のディレクトリを指定してみたが動作しなかった。これで,サンプルのタブを開いても結果が正常に表示されるようになった。

ちなみに,環境は以下。

  • CM4.8
  • CDH4.4
  • Hue2.5

参考

コメント

タイトルとURLをコピーしました