web-dev-qa-db-ja.com

metastore_dbは、Hiveを実行する場所に作成されます

フォルダmetastore_dbは、Hiveクエリを実行する任意のディレクトリに作成されます。定義された場所にmetastore_dbを1つだけ置き、場所全体に作成されないようにする方法はありますか? Hive.metastore.localと関係がありますか?

22
darcyq

ここで重要なプロパティはjavax.jdo.option.ConnectionURLです。このプロパティのデフォルト値はjdbc:derby:;databaseName=metastore_db;create=trueです。この値は、Hiveメタストアとして埋め込みダービーを使用することを指定し、メタストアの場所はmetastore_dbです。また、メタストアがまだ存在しない場合は作成されます。

メタストアの場所(metastore_db)は相対パスであることに注意してください。したがって、Hiveを起動した場所に作成されます。このプロパティを(Hive-site.xmlで)更新して、たとえば場所への絶対パスを指定すると、その場所からメタストアが使用されます。

ただし、埋め込まれたderbyメタストアには一度に1人のユーザーしかアクセスできないことを警告しておきます。 Hiveは組み込みのダービーをデフォルトで使用して、すぐに使用できるようにし、テストを容易にします。実際のシステムでは、MySQLやPostgreSQLのようなスタンドアロンの「実際の」データベースに移行することをお勧めします。それを行う方法の説明は利用可能です ここ

36
Mark Grover

Embedded derbyモードを使用しているため。単一のmetastore_dbロケーションを使用する。以下のプロパティを変更する必要があります。

<property>
  <name>javax.jdo.option.ConnectionURL</name>  
  <value>jdbc:derby:;databaseName=/<file-location>/metastore_db;create=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

これがお役に立てば幸いです。詳細については ここをクリック