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