SQL进阶技巧:Hive如何进行更新和删除操作?

目录

[0 Hive支持更新和删除操作吗?](#0 Hive支持更新和删除操作吗?)

[1 Hive删除操作如何实现?](#1 Hive删除操作如何实现?)

[2 Hive更新操作如何实现?](#2 Hive更新操作如何实现?)

[3 小结](#3 小结)


0 Hive支持更新和删除操作吗?

Hive在默认情况下不支持更新和删除操作,但可以通过特定方式如使用ORCFileformat和AcidOutputFormat来实现。由于HDFS的一次写入,多次读取设计,Hive的更新操作非常低效。HDFS不采用多次写,多次读模式是为了避免事务处理和复杂性。随着业务需求发展,湖仓一体成为解决需要修改数据场景的新方案。

Hive对使用Update功能的表有特定的语法要求, 语法要求如下:

  • 要执行Update的表中, 建表时必须带有buckets(分桶)属性
  • 要执行Update的表中, 需要指定格式,其余格式目前赞不支持, 如:parquet格式, 目前只支持ORCFileformat和AcidOutputFormat
  • 要执行Update的表中, 建表时必须指定参数('transactional' = true);

经过实验,你会发现Hive的更新机制速度非常的慢

sql 复制代码
insert overwrite tmp 
select * from tmp where id != '666';

,在很小的数据集上更新,也要分钟级别,基本上处于不可用的状态,那么为什么Hive设计成不支持增删改查呢,我们一起聊聊根源。

1 Hive删除操作如何实现?

正常hive删除操作基本都是覆盖原数据;

sql 复制代码
insert overwrite tmp 
select * from tmp where id != '666';

2 Hive更新操作如何实现?

更新也是覆盖操作;

sql 复制代码
insert overwrite tmp 
select id,label,
       if(id = '1' and label = 'grade','25',value) as value 
from tmp where id != '666';

3 小结

本文给出了Hive中实现更新及删除操作的技巧,并分析了Hive中为什么不直接进行更新和删除操作的原因。

如果您觉得本文还不错,对你有帮助,那么不妨可以关注一下我的数字化建设实践之路专栏,这里的内容会更精彩。

专栏 原价99,现在活动价59.9,按照阶梯式增长,还差5个人上升到69.9,最终恢复到原价

专栏优势:

(1)一次收费持续更新。

(2)实战中总结的SQL技巧,帮助SQLBOY 在SQL语言上有质的飞越,无论你应对业务难题及面试都会游刃有余【全网唯一讲SQL实战技巧,方法独特

(3)实战中数仓建模技巧总结,让你认识不一样的数仓。【数据建模+业务建模,不一样的认知体系】(如果只懂数据建模而不懂业务建模,数仓体系认知是不全面的

(4)数字化建设当中遇到难题解决思路及问题思考。

我的 专栏具体链接如下:

数字化建设通关指南_莫叫石榴姐的博客-CSDN博客

https://blog.csdn.net/godlovedaniel/category_12706766.html

相关推荐
S1998_1997111609•X42 分钟前
论当今社会主义与人文关怀人格思想下的恶意仿生注入污染蜜罐描述进行函数值非法侵入爬虫的咼忄乂癿〇仺⺋.
数据库·网络协议·百度·ssh·开闭原则
倔强的石头_2 小时前
kingbase备份与恢复实战(六)—— 备份自动化与保留策略:Windows任务计划+日志追溯
数据库
轻刀快马3 小时前
别被 ORM 框架宠坏了:从一场“订单消失”悬案,看懂 MySQL 为什么要强推 InnoDB
数据库·mysql
学网安的肆伍3 小时前
【043-WEB攻防篇】PHP应用&SQL注入&符号拼接&请求方法&HTTP头&JSON&编码类
sql·安全·php
Meya11273 小时前
别再人工硬扛机房管理!智能 U 位系统,让机房管理一键数字化
大数据·运维
天辛大师4 小时前
天辛大师谈人工智能时代,如何用AI研究历代放生劝善忏悔文
大数据·人工智能·随机森林·启发式算法
为儿打call4 小时前
SparkSQL 广播超时排查:小表但是多分区 = BroadcastTimeout
大数据·spark
后端漫漫4 小时前
Redis 客户端工具体系
数据库·redis·缓存
eastyuxiao4 小时前
如何用思维导图拆解项目范围
大数据·人工智能·流程图
渣渣盟4 小时前
Apache Flink物理分区算子全解析
大数据·flink·apache