概述
hive事务性问题解决
在运行一段hiveSQL时
select * from hive_ohx_f_prepay;
报错如下:
error:This command is not allowed on an ACID table default.hive_ohx_f_prepay with a non-ACID transaction manager. Failed command: select count(1) from hive_ohx_f_prepay
原因是hive0.14版本之后,开始支持事务。
hive事务的限制条件为:
1.在现在的版本中,只支持ORC文件格式。
2.默认情况下,hive的事务性是关闭的,开启需要设置transactional=true。
3.表必须是Bucket表。
4.外部表不能成为ACID表,因为外部表的变化,不能被Compact控制。
5.不能从一个非ACID会话向ACID表中读写数据。这意味着Hive事务管理必须设置成org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
6.目前只支持快照级别的隔离,不支持脏读,重复读等。
7.存在的Zookeeper和内存锁管理机制与事务是不兼容的
所以根据第5点,解决方法为在hive中运行如下命令即可
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
最后
以上就是拼搏网络为你收集整理的hive事务性问题解决的全部内容,希望文章能够帮你解决hive事务性问题解决所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复