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

相关推荐
FJW02081421 小时前
关系型数据库大王Mysql——DDL语句操作示例
数据库·mysql
言之。21 小时前
Chroma 开源的 AI 应用搜索与检索数据库(即向量数据库)
数据库·人工智能·开源
来旺1 天前
互联网大厂Java面试全解析及三轮问答专项
java·数据库·spring boot·安全·缓存·微服务·面试
wudl55661 天前
flink sql 所有函数详细用例
大数据·sql·flink
cr7xin1 天前
基于Session和Redis实现短信验证码登录
数据库·redis·缓存
乌暮1 天前
数据库--视图、索引
数据库
luoganttcc1 天前
是凯恩斯主义主导 西方的经济决策吗
大数据·人工智能·金融·哲学
武子康1 天前
大数据-130 - Flink CEP 详解 - 捕获超时事件提取全解析:从原理到完整实战代码教程 恶意登录案例实现
大数据·后端·flink
Web3&Basketball1 天前
达梦数据库性能调优总结
数据库·oracle
-Xie-1 天前
Mysql杂志(三十三)——锁
数据库·mysql