是否有可能在 hive 中共享表。我的意思是用户创建了一个配置单元表。稍后,多个用户可以同时在同一张桌子上工作。
我听说过 derby 和每个用户的个人元存储。但是单个元存储选项不允许用户同时在同一组表上工作,对吗?
有没有其他方法可以解决这个问题?
因为当我们尝试同时访问 hive 时,会得到以下错误——
原因:错误 XSDB6:另一个 Derby 实例可能已经启动了数据库 /root/metastore_db。
错误 XSDB6:另一个 Derby 实例可能已经启动了数据库 /root/metastore_db。
当您尝试启动多个 hive shell 实例时,可能会发生此错误。即使在关闭标签/终端后,锁定也可能在后台保持(由于断开连接不当)。
解决方案是找到使用的过程grep
ps aux | grep hive
现在,使用终止进程,
kill -9 hive_process_id (ex: kill -9 21765)
重新启动配置单元外壳。它工作正常。
我使用 Ubuntu,当我在两个单独的终端窗口中从同一位置打开配置单元时发生此错误。这将被系统解释为多个用户。关闭一个终端窗口/选项卡,这应该可以解决问题。
当运行使用嵌入式 Derby 元存储在同一目录中启动的 spark 应用程序的两个实例(例如:、、或)时,spark-shell
会spark-sql
发生这种情况。start-thriftserver
当 hive-site.xml 未配置时,Spark 上下文会自动metastore_db
在当前目录中创建(请参阅 Spark 文档)。为避免这种情况,请在不同的目录中启动第二个 spark 应用程序或使用持久性元存储(例如:服务器模式中的 Hive Derby)并通过hive-site.xml
.