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

相关推荐
xuyin12041 小时前
SQLite基础及优化
数据库·sqlite
Faith_xzc2 小时前
MySQL 迁移至 Doris 最佳实践方案
数据库·mysql·adb
ikun·2 小时前
MySQL高可用
数据库·mysql
tongjiwenzhang2 小时前
apptrace 三大策略,助力电商 App 在 618 突围
大数据
Bug退退退1232 小时前
分析 redis 的 exists 命令有一个参数和多个参数的区别
数据库·redis·缓存
老天文学家了2 小时前
蓝桥杯-不完整的算式
数据库·职场和发展·蓝桥杯
YUNYINGXIA2 小时前
PostgreSQL初体验
数据库·postgresql
舰长1152 小时前
ubuntu 安装 Redis新版Redis 7.x
数据库·redis·ubuntu
弥鸿2 小时前
ElasticSearch性能优化
大数据·elasticsearch·性能优化
文牧之3 小时前
Oracle 数据库的默认隔离级别
运维·数据库·oracle