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でどのように機能するかについてのヘルプまたは説明をいただければ幸いです。
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
メタストアはすでに存在しましたが、完全な形ではありません。
答えは次のとおりです。
Hiveを初めて実行する前に、実行します
schematool -initSchema -dbType derby
既にHiveを実行してからinitSchemaを試行し、失敗した場合:
mv metastore_db metastore_db.tmp
再実行
schematool -initSchema -dbType derby
ハイブをもう一度実行する
**注意:ディレクトリを変更しても、上記で作成したmetastore_dbは見つかりません!私は今日、文字通りHiveを初めて使用しようとしているので、これには十分な理由があると確信しています。ああ、これに関する情報があります:metastore_dbは、Hiveを実行する場所で作成されます
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フォルダーが見つからないため、次のことを試しました。
find /usr/ -name Hive-schema-2.0.0.derby.sql
vi /usr/local/Cellar/Hive/2.0.1/libexec/scripts/metastore/upgrade/derby/Hive-schema-2.0.0.derby.sql
schematool -dbType derby -initSchema
を再実行すると、すべてうまくいきます!これが誰かを助けることを願っています。
ダービーデータベースファイルrm -Rf $Hive_HOME/metastore_db
を削除することで修正した同様の問題が発生しました
これによりスキーマが完全に削除されることに注意してください!
古いスキーマを削除した後、次のコマンドで再初期化できました。
$Hive_HOME/bin/schematool -initSchema -dbType derby
Hiveを呼び出す場所とは異なる場合があります。Hiveのインストールディレクトリに移動して、./bin/Hive
を実行してください。
これを試してください:schematool -dbType mysql -initSchema
Hive SchemToolのドキュメントを読む: https://cwiki.Apache.org/confluence/display/Hive/Hive+Schema+Tool