文件夹metastore_db
是在我运行蜂巢查询的任何目录中创建。 有没有什么办法只有一个metastore_db
在规定的位置,并从正在创建全国各地的地方停下来? 它有什么关系hive.metastore.local
?
Answer 1:
这里感兴趣的属性是javax.jdo.option.ConnectionURL
。 此属性的默认值是jdbc:derby:;databaseName=metastore_db;create=true
。 此值指定您将使用嵌入式Derby作为您的蜂房metastore和metastore的位置metastore_db
。 此外,如果它不存在的metastore将被创建。
需要注意的是metastore(位置metastore_db
)是相对路径。 因此,它被创建你来自哪里,推出蜂巢。 如果您更新该属性(在蜂房的site.xml)是,说一个位置的绝对路径,该metastore将从该位置被使用。
我必须警告你,尽管嵌入式德比metastore只能由一个用户在一次访问。 蜂巢使用嵌入式Derby默认为允许开箱体验,为便于测试。 对于任何实际系统中,我会建议移动到单机像MySQL或PostgreSQL“真正”的数据库。 如何做到这一点可说明这里 。
Answer 2:
由于您使用的嵌入式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>
我希望这能帮到您。 欲了解更多详情请点击这里
文章来源: metastore_db created wherever I run Hive