Подтвердить что ты не робот

Metastore_db создается везде, где я запускаю Hive

Папка metastore_db создается в любой директории, где я запускаю запрос Hive. Есть ли способ иметь только один metastore_db в определенном месте и не создавать его во всех местах? Имеет ли это какое-либо отношение к hive.metastore.local?

4b9b3361

Ответ 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>

Надеюсь, это поможет вам. Для более подробной информации нажмите здесь