配置单元事务+远程元存储错误

wooyq4lh  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(323)

我正在emr5.5.0上运行hive2.1.1,带有一个远程mysql metastoredb。我需要在配置单元上启用事务,但是当我按照这里的配置并运行任何查询时,会出现以下错误
失败:获取锁时出错:与元存储通信时出错
元存储上的设置:

hive.compactor.worker.threads = 0
hive.compactor.initiator.on = true

配置单元客户端中的设置:

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 .

ar5n3qh5

ar5n3qh51#

来自的错误失败:获取锁时出错:与元存储通信时出错
有时因为它没有任何数据,所以需要初始化表中的一些数据。例如下面的例子。

create table t1(id int, name string)     
clustered by (id) into 8 buckets     
stored as orc TBLPROPERTIES ('transactional'='true');
lkaoscv7

lkaoscv72#

看起来hive没有正确地创建事务管理器所需的表。我不确定它是从哪里得到它的模式的,但它肯定是错的。
所以我们只是运行hivetxn模式查询来手动设置模式。从现在开始,我们将在任何一个集群的开始做这个。
https://github.com/apache/hive/blob/master/metastore/scripts/upgrade/mysql/hive-txn-schema-2.1.0.mysql.sql

相关问题