在我运行Hive的任何地方都创建了metastore_db

时间:2012-11-29 11:35:10

标签: hive hiveql

在我运行Hive查询的任何目录中创建文件夹metastore_db。有没有办法在定义的位置只有一个metastore_db并阻止它在各个地方被创建?它与hive.metastore.local有什么关系吗?

2 个答案:

答案 0 :(得分:31)

此处感兴趣的属性为javax.jdo.option.ConnectionURL。此属性的默认值为jdbc:derby:;databaseName=metastore_db;create=true。此值指定您将使用嵌入式derby作为Hive Metastore,并且Metastore的位置为metastore_db。如果尚未存在,则会创建Metastore。

请注意,Metastore(metastore_db)的位置是相对路径。因此,它会从您启动Hive的位置创建。如果您更新此属性(在您的hive-site.xml中),例如某个位置的绝对路径,将从该位置使用Metastore。

我必须警告你,虽然嵌入式德比共聚会只能由一个用户一次访问。 Hive默认使用嵌入式德比,以提供开箱即用的体验和易于测试。对于任何实际系统,我建议转移到独立的“真实”数据库,如MySQL或PostgreSQL。有关如何执行此操作的说明可用here

答案 1 :(得分:1)

因为您使用嵌入式德比模式。使用单个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>

我希望这会对你有所帮助。有关详细信息click here