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

最佳答案

这里感兴趣的属性是javax.jdo.option.ConnectionURL。此属性的默认值为jdbc:derby:;databaseName=metastore_db;create=true。此值指定您将使用嵌入式derby作为Hive元存储,并且该元存储的位置为metastore_db。另外,如果元存储库尚不存在,则将创建它。

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

我必须警告您,尽管嵌入式derby元存储一次只能由一个用户访问。 Hive默认情况下使用嵌入式derby,以提供开箱即用的体验并简化测试。对于任何实际的系统,我建议移至独立的“真实”数据库,例如MySQL或PostgreSQL。有关如何执行该操作的说明,请参见here

关于hive - 无论我在哪里运行Hive都创建了metastore_db,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13624893/

10-12 23:47
查看更多