【发布时间】:2017-05-26 15:56:18
【问题描述】:
我在 EMR 5.5.0 上使用远程 mysql 元存储数据库运行 Hive 2.1.1。我需要在 hive 上启用事务,但是当我按照配置 here 并运行任何查询时,我收到以下错误
失败:获取锁时出错:与元存储通信时出错
元存储上的设置:
hive.compactor.worker.threads = 0
hive.compactor.initiator.on = true
hive 客户端中的设置:
SET hive.support.concurrency=true;
SET hive.enforce.bucketing=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
这只发生在我设置hive.txn.manager 时,所以我的 hive 元存储肯定是在线的。
我已经尝试了一些旧的建议来启用 Hive 测试功能,但这些建议不起作用,但我认为这不再是一个测试功能了。我不能像 SO 中的类似帖子所建议的那样关闭并发,因为我需要并发。问题似乎是 DbTxnManager 没有从配置单元配置中正确获取远程元存储连接信息,或者 mysqldb 缺少 DbTxnManager 所需的一些表。我有datanucleus.autoCreateTables=true。
【问题讨论】:
-
我能找到的唯一实现 HiveTxnManager 的类是 DbTxnManager,它不适合我。我有一个替代方案,那就是编写一个自定义事务管理器,但这并不理想。