我是靠谱客的博主 拼搏网络,最近开发中收集的这篇文章主要介绍hive事务性问题解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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事务性问题解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部