LoginSignup
0
1

More than 5 years have passed since last update.

EMR上でHive2.1から2.3へ

Last updated at Posted at 2017-10-03

EMR限定なのかどうかは知らないけど、とりあえず書いておく。
某所に怒られたら消そう。ありがとう某所の中の人。

Emr5.8.0はHiveのバージョンが2.3.0になっており、どうやら2.1系とメタストアの互換性がないらしい。そのため、2.1系でRDSとかにメタストア作ってた場合、流用しようとするとクラスタの起動が出来ない。

以下はEMRでの手順を指す。一部手順はEMR使ってない場合でも流用できる気がする。

まず、hive-siteから

javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
javax.jdo.option.ConnectionURL

この3つの設定ふっとばしてローカルのメタストアを向くようにしてクラスタ起動。

その後、masterインスタンスに繋いで/etc/hive/conf/hive-site.xmlを直接編集する。
※rootユーザ

javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
javax.jdo.option.ConnectionURL

この3つがローカル用の設定になってるはずなので、それを今まで2.1系で使ってたRDSの設定を入れる。

その後、hadoopユーザとなり、

hive --service schemaTool -dbType mysql -info

を実行すると、

...
Hive distribution version
Metastore schema version
...

*** schemaTool failed ***

こんなんが出るはず。で、多分2つのversionが違うはずなので、

hive --service schemaTool -dbType mysql -upgradeSchema

...

schemaTool completed

失敗しなけりゃOK。またinfo叩くと今度は成功するはず。
なんかupgradeSchemaの中身は.sqlファイル実行してるだけくさいから直接手動でSQL流すでもいけるんでは?と思いはしたけどやめておいた。

20171027追記

ドハマりしたが解決したので。(確認バージョンEMR5.9.0)
core-siteに

fs.s3.awsAccessKeyId
fs.s3.awsSecretAccessKey

の設定がしてある場合、hiveでcountクエリが通らなかった。
ロールにs3のフル権限つけて、上の設定外したら通るようになった。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1