什么是ACID,为什么要用它?
ACID代表数据库事务的四个特性:原子性(手术完全成功或失败,它没有离开部分数据),一致性(一旦应用程序执行一个操作,操作的结果是可见的在每个后续操作),隔离(由一个用户一个不完整的操作不会引起意想不到的副作用为其他用户),和持久性(一个操作完成后它将被保留下来即使面对机器或系统故障)。长期以来,人们一直期望数据库系统将这些特性作为其事务功能的一部分。
在Hive 0.13之前,原子性、一致性和持久性都是在分区级别上提供的。可以通过打开一个可用的锁定机制(ZooKeeper或内存中)来提供隔离。通过在Hive 0.13中添加事务,现在可以在行级提供完整的ACID语义,这样一个应用程序可以添加行,而另一个应用程序可以从相同的分区读取,而不会相互干扰。
使用ACID语义的事务已经被添加到Hive中,以解决以下用例:
数据流摄取。许多用户都有Apache Flume、Apache Storm或Apache Kafka这样的工具,他们使用这些工具将数据流传输到Hadoop集群中。虽然这些工具可以以每秒数百行或更多行的速度写入数据,但Hive只能每15分钟到1小时添加一次分区。添加分区通常会很快导致表中分区数量过多。这些工具可以将数据流传输到现有的分区中,但这会导致读取器进行脏读(即,在开始查询之后会看到写入的数据),并在目录中留下许多小文件,从而对NameNode造成压力。有了这个新功能,这个用例将得到支持,同时允许读者获得一致的数据视图,并避免过多的文件。
缓慢变化维度。在典型的星型模式数据仓库中,维度表会随着时间缓慢变化。例如,零售商将开设新商店,需要将其添加到stores表中,或者现有商店可能更改其面积或其他跟踪特征。这些更改导致插入单个记录或更新记录(取决于所选择的策略)。从0.14开始,Hive就能够支持这一点。
数据重述。有时收集的数据被发现是不正确的,需要纠正。或者,数据的第一个实例可能是一个近似值(90%的服务器报告),稍后提供完整的数据。或者,业务规则可能要求由于后续的事务而重复某些事务(例如,在购买之后,客户可能购买了会员资格,因此有权享受折扣价格,包括之前的购买)。或者,根据合同,用户可能需要在关系终止时删除其客户的数据。从Hive 0.14开始,可以通过插入、更新和删除来支持这些用例。
使用SQL MERGE语句进行批量更新。

Limitations:
1.还不支持开始、提交和回滚。所有的语言操作都是自动提交的。计划在未来的版本中支持这些功能。
2.在第一个版本中只支持ORC文件格式。该特性的构建使得事务可以被任何存储格式使用,这些格式可以决定更新或删除如何应用于基本记录(基本上,这些记录有显式或隐式的行id),但到目前为止,集成工作只针对ORC完成。
3.默认情况下,事务被配置为off。请参阅下面的配置部分,以讨论需要设置哪些值来配置它。
4.要使用这些特性,表必须被封装起来。在同一个系统中不使用事务和ACID的表不需要被反包。外部表不能成为ACID表,因为外部表上的更改超出了压实器(hif -13175)的控制范围。
5.不允许从非ACID会话中读取/写入ACID表。换句话说,Hive事务管理器必须设置为org.apache.hadoop.hive.ql.lockmgr。DbTxnManager以便与ACID表一起工作。
6.此时,只支持快照级别隔离。当一个给定的查询开始时,将向它提供数据的一致快照。不支持脏读、提交读、可重复读或可序列化。通过引入BEGIN,目的是在事务持续期间支持快照隔离,而不仅仅是单个查询。可以根据用户请求添加其他隔离级别。
7.现有的ZooKeeper和内存锁管理器与事务不兼容。我们无意解决这个问题。有关如何为事务存储锁的讨论,请参阅下面的基本设计。
8.使用Oracle作为Metastore DB和datanucleus。connectionPoolingType=BONECP"可能会产生间歇的"没有这样的锁…"和"没有这样的事务…"错误。datanucleus设置”。在这种情况下,建议使用connectionPoolingType=DBCP。
8.加载数据…事务表不支持语句。(这直到HIVE-16732才被正确执行)

方法1:
hive更新用overwrite关检词可以做,也可以做拉链,前提是你的数据量要小,每天新增数据量可控,不然速度超级慢,最好的方式就是不处理,因为有分区的存在,每次选取分区时间最近的,也就相当于做了一个拉链,不考虑性能可以用overwrite
拉链表参考:https://blog.csdn.net/weixin_40444678/article/details/81083614

方法2:
参考:https://www.cnblogs.com/chengjunhao/p/9759452.html
打开CDH,

粘贴xml配置保存,服务端,客户端,都需要更新

<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.enforce.bucketing</name>
<value>true</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
</property>
<property><name>hive.in.test</name><value>true</value>
</property>

hive支持update、delete相关推荐

  1. CDH中配置hive支持update delete

    cdh hive支持update delete参数配置方法 以下配置项必须被设定: Client端:hive.support.concurrency – true hive.enforce.bucke ...

  2. 2018年第31周-hive支持的Delete和Update的配置

    配置hive-site.xml hive.support.concurrency = true hive.enforce.bucketing = true hive.exec.dynamic.part ...

  3. Hive支持Update和Delete语句

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Update 文档说了hiv ...

  4. 让Hive支持行级insert、update、delete

    首先:欢迎各位学习java和大数据的程序员朋友们加入Java交流学习群: 721506929群里提供免费的架构学习资料,直播讲解,讲师都是有着十几年阿里java开发经验的大牛,欢迎各位前来围观学习. ...

  5. hive支持所有mysql语法_Hive sql 语法解读 | 学步园

    一. 创建表 在官方的wiki里,example是这样的: Sql代码 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name da ...

  6. mysql删除语句事务_事务用来管理 insert,update,delete 语句

    MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 ...

  7. springData jpa update delete

    使用@Modifying + @Query 实现springData 对数据的 update delete public interface ICustomer extends JpaReposito ...

  8. linux mysql 事务_linux下mysql Insert update delete 事务 用户管理

    linux下mysql Insert update delete  事务 用户管理 1.INSERT插入语句格式: INSERT INTO tb_name (字段1, 字段2, ...) VALUES ...

  9. SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)

    SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete) SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MS ...

  10. 配置tomcat支持http delete和put的方法

    来源:http://blog.sina.com.cn/s/blog_4b5bc01101013flw.html WebDAV(Web-based Distributed Authoring and V ...

最新文章

  1. 旋转卡壳——模板(对踵点)
  2. 转:百万级访问量网站的技术准备工作
  3. 红外感应自动出水水龙头的电路原理
  4. 【转】细数中国十大名校的IT牛人
  5. MySQL主从复制从机验证报错:ERROR 3021(HY000):this operation cannot be performed with a
  6. 计算机互联网行业高校,9家互联网巨头最青睐的重点大学汇总,网友:比各种排名强太多了...
  7. 天然气阶梯是按年还是按月_按年算账 多退少补 你的年度个税应该是怎么算?...
  8. codeforces Cable Connection
  9. IntelliJ IDEA for Mac在MacOS模式下的选择快捷键(Select Shortcut)
  10. QC安装与运行中的问题汇集
  11. win10安装账户卡住_win10安装卡着不动怎么处理 解决win10安装卡死方法
  12. TensorFlow精进之路(三):两层卷积神经网络模型将MNIST未识别对的图片筛选出来
  13. NGUI组件参数总结
  14. android系统b181更新包,华为nova 2s官方固件rom刷机包_华为nova2s完整系统升级包
  15. Tecplot新手进阶--使用tecplot宏操作批量处理数据输出图片(详细步骤)
  16. 关闭appleid双重认证_如何查看并移除登陆过Apple ID的设备
  17. HTML5简明教程系列之HTML5基础(一)
  18. java画哆啦A梦_java如何绘制哆啦A梦 java绘制哆啦A梦代码示例
  19. 智能制造系统解决方案和智能工厂发展趋势
  20. 地图标绘软件_如何制作专题地图(设计、规划、测绘制作图斑)标绘使用详解...

热门文章

  1. 解决Hadoop Browse Directory Couldn‘t upload the file 错误.无法上传文件
  2. 计算机领域中dns是什么意思,dns错误是什么意思?dns错误要如何解决?
  3. excel shared formula处理
  4. 水质检测c语言程序,单片机TDS水质检测源程序
  5. paip.破解网站手机验证码
  6. 你必须知道的指针基础-6.内存的初始化及结构体的使用
  7. 阿里智能App下架,智能家居平台淘汰赛拉开大幕
  8. COOC一款用于文献计量和知识图谱绘制的新软件
  9. uniapp连接手机端调试
  10. 在线模拟装机大学计算机,模拟装机实验.doc