Папка metastore_db
создается в любой директории, где я запускаю запрос Hive. Есть ли способ иметь только один metastore_db
в определенном месте и не создавать его во всех местах? Имеет ли это какое-либо отношение к hive.metastore.local
?
Metastore_db создается везде, где я запускаю Hive
Ответ 1
Интересующее свойство здесь javax.jdo.option.ConnectionURL
. Значением по умолчанию этого свойства является jdbc:derby:;databaseName=metastore_db;create=true
. Это значение указывает, что вы будете использовать встроенное дерби в качестве метастара улья, а местоположение метастора - metastore_db
. Также метастар будет создан, если он еще не существует.
Обратите внимание, что расположение метастора (metastore_db
) является относительным путем. Поэтому он создается, когда вы запускаете Hive. Если вы обновите это свойство (в вашем hive-site.xml), скажем, абсолютный путь к местоположению, метастор будет использоваться из этого местоположения.
Я должен предупредить вас, хотя встроенный метадазор дерби может быть доступен только одному пользователю за раз. По умолчанию улей использует встроенное дерби, чтобы обеспечить возможность использования вне коробки и простоту тестирования. Для любой практической системы я бы рекомендовал перейти к автономной "реальной" базе данных, например MySQL или PostgreSQL. Инструкции о том, как это сделать, доступны здесь.
Ответ 2
Так как вы используете режим 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>
Надеюсь, это поможет вам. Для более подробной информации нажмите здесь