フォルダmetastore_db
は、Hiveクエリを実行する任意のディレクトリに作成されます。定義された場所にmetastore_db
を1つだけ置き、場所全体に作成されないようにする方法はありますか? Hive.metastore.local
と関係がありますか?
ここで重要なプロパティは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のようなスタンドアロンの「実際の」データベースに移行することをお勧めします。それを行う方法の説明は利用可能です ここ 。
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>
これがお役に立てば幸いです。詳細については ここをクリック