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

相关推荐
tod1133 分钟前
Redis 分布式锁进阶:从看门狗到 Redlock 的高可用实践
数据库·redis·分布式
山岚的运维笔记4 分钟前
SQL Server笔记 -- 第69章:时态表
数据库·笔记·后端·sql·microsoft·sqlserver
一只理智恩11 分钟前
向量数据库在AI领域的核心作用、优势与实践指南
数据库·人工智能
那个松鼠很眼熟w21 分钟前
1.JDBC程序的一般步骤
数据库
亓才孓26 分钟前
【SQLSyntaxErrorException】SQL语法错误
数据库·sql·mybatis
Hy行者勇哥30 分钟前
Claude Code 类似软件全景对比:差异、成本与选型(技术分享)
大数据·人工智能·学习方法
一个响当当的名号34 分钟前
lectrue16 二阶段锁
jvm·数据库
babe小鑫36 分钟前
2026年大专运营专业学习数据分析的价值与路径
大数据·人工智能
laplace012338 分钟前
第二章 字符串和文本 下
服务器·数据库·python·mysql·agent
OpenMiniServer43 分钟前
AI大模型的本质:基于大数据的拟合
大数据·人工智能