web-dev-qa-db-ja.com

Hiveインストールの問題:Hiveメタストアデータベースが初期化されていません

Raspberry Pi 2にHiveをインストールしようとしました。zip圧縮されたHiveパッケージを解凍してHiveをインストールし、作成したhduserユーザーグループで$ HADOOP_HOMEおよび$ Hive_HOMEを手動で構成します。 Hiveを実行すると、次のエラーメッセージが表示されました。Hive

エラーStatusLogger log4j2構成ファイルが見つかりません。デフォルト設定の使用:エラーのみをコンソールに記録します。

スレッド「メイン」の例外Java.lang.RuntimeException:Hiveメタストアデータベースは初期化されていません。スキーマを作成するには、schematool(例:./schematool -initSchema -dbType ...)を使用してください。必要に応じて、JDBC接続文字列に基になるデータベースを自動作成するオプションを含めることを忘れないでください(例:mysqlの?createDatabaseIfNotExist = true)

そこで、上記のエラーメッセージに示されているコマンドを実行しました。schematool -dbType derby -initSchemaエラーメッセージが表示されました。

エラー:FUNCTION 'NUCLEUS_ASCII'はすでに存在します。 (状態= X0Y68、コード= 30000)org.Apache.hadoop.Hive.metastore.HiveMetaException:スキーマの初期化に失敗しました!メタストアの状態は一貫性がありません!! * schemaTool failed *

このエラーをオンラインでグーグルで検索しようとしても、役に立つ情報がないようです。 HiveがDerbyでどのように機能するかについてのヘルプまたは説明をいただければ幸いです。

37

Hiveのインストール後、最初にHiveを実行した場合、Hiveはmetastore_dbを作成/初期化しようとしましたが、明らかに正しくない可能性があります。その最初の実行で、おそらくあなたはあなたのエラーを見ました:

Exception in thread "main" Java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)

Hiveを実行すると、失敗しても、Hiveを実行したディレクトリにmetastore_dbディレクトリが作成されます。

ubuntu15-laptop: ~ $>ls -l |grep meta
drwxrwxr-x 5 testuser testuser 4096 Apr 14 12:44 metastore_db

だからあなたが実行しようとしたとき

ubuntu15-laptop: ~ $>schematool -initSchema -dbType derby

メタストアはすでに存在しましたが、完全な形ではありません。

答えは次のとおりです。

  1. Hiveを初めて実行する前に、実行します

    schematool -initSchema -dbType derby

  2. 既にHiveを実行してからinitSchemaを試行し、失敗した場合:

    mv metastore_db metastore_db.tmp

  3. 再実行

    schematool -initSchema -dbType derby

  4. ハイブをもう一度実行する

**注意:ディレクトリを変更しても、上記で作成したmetastore_dbは見つかりません!私は今日、文字通りHiveを初めて使用しようとしているので、これには十分な理由があると確信しています。ああ、これに関する情報があります:metastore_dbは、Hiveを実行する場所で作成されます

122
RJ Cole

HomeBrew(MacOS)でHiveを/ usr/local/Cellar/Hiveにインストールし、schematool -dbType derby -initSchemaを実行した後、次のエラーメッセージが表示されます。

2.0.0へのメタストアスキーマ初期化の開始初期化スクリプトHive-schema-2.0.0.derby.sqlエラー:FUNCTION 'NUCLEUS_ASCII'は既に存在します。 (状態= X0Y68、コード= 30000)org.Apache.hadoop.Hive.metastore.HiveMetaException:スキーマの初期化に失敗しました!メタストアの状態は一貫していません!!

ただし、インストールパスの下にmetastore_dbまたはmetastore_db.tmpフォルダーが見つからないため、次のことを試しました。

  1. find /usr/ -name Hive-schema-2.0.0.derby.sql
  2. vi /usr/local/Cellar/Hive/2.0.1/libexec/scripts/metastore/upgrade/derby/Hive-schema-2.0.0.derby.sql
  3. 「NUCLEUS_ASCII」関数と「NUCLEUS_MATCHES」関数にコメントする
  4. schematool -dbType derby -initSchemaを再実行すると、すべてうまくいきます!

これが誰かを助けることを願っています。

17
dasu

ダービーデータベースファイルrm -Rf $Hive_HOME/metastore_dbを削除することで修正した同様の問題が発生しました

これによりスキーマが完全に削除されることに注意してください!

古いスキーマを削除した後、次のコマンドで再初期化できました。

$Hive_HOME/bin/schematool -initSchema -dbType derby

Hiveを呼び出す場所とは異なる場合があります。Hiveのインストールディレクトリに移動して、./bin/Hiveを実行してください。

11
stimpie

これを試してください:schematool -dbType mysql -initSchema

Hive SchemToolのドキュメントを読む: https://cwiki.Apache.org/confluence/display/Hive/Hive+Schema+Tool

1
Hamdi Charef