Hive数仓操作(十六)
DML(数据操作语言)指的是用于操作数据的 SQL 语言部分,主要包括对数据的插入、更新、删除等操作。Hive 的 DML语句主要包括 INSERT、UPDATE 和 DELETE 。以下是一些重要的 Hive DML 语句及其解析。
Hive的DML语句
一、 插入操作INSERT
一般不会单条或几行插入,使用多表复制即可
1. 新增简单数据类型
单条插入:
INSERT INTO c1 VALUES (1007, "toly", "男", 19);
- 说明:将一条记录插入到表
c1中。数据类型包括整数、字符串和小数等。
多条插入:
INSERT INTO c1 VALUES
(1007, 'toly', '男', 19),
(1008, 'toly', '男', 19),
(1009, 'toly', '男', 19);
- 说明:一次性插入多条记录到表
c1。
2. Array 数组类型
使用 ARRAY:
INSERT INTO t12 SELECT 1001, ARRAY('eat', 'sleep');
- 说明:将一条记录插入到表
t12,第二列为一个包含两个字符串元素的数组。
3. Map 映射类型
使用 STR_TO_MAP:
INSERT INTO t14 SELECT 1001, STR_TO_MAP('chinese:99,math:88,english:77');
- 说明:将一条记录插入到表
t14,第二列为一个映射,键为科目,值为分数。
4. 多表复制
在复制数据之前,我们需要先创建目标表 stu05_1、stu05_2 和 stu05_3。可以使用 LIKE 语句创建表,保持相同的结构。
CREATE TABLE stu05_1 LIKE stu05;
CREATE TABLE stu05_2 LIKE stu05;
CREATE TABLE stu05_3 LIKE stu05;
复制:
FROM stu05
INSERT OVERWRITE TABLE stu05_1 SELECT * WHERE condition1;
INSERT OVERWRITE TABLE stu05_2 SELECT * WHERE condition2;
INSERT OVERWRITE TABLE stu05_3 SELECT * WHERE condition3;
- 说明:从源表
stu05中读取数据,根据不同的条件分别写入到三个目标表stu05_1、stu05_2和stu05_3。这样可以节省读取表格数据的时间。
5. INSERT INTO 方式
语法:
INSERT INTO TABLE table_name [PARTITION (partition_col = 'value' ...)]
SELECT ... FROM source_table WHERE ...;
示例:
INSERT INTO TABLE sales_data PARTITION (year = 2023)
SELECT * FROM staging_sales WHERE sale_date >= '2023-01-01';
解析:
- 该语句将从
staging_sales表中选择数据,并插入到sales_data表中,分区为year=2023。 - 如果
sales_data表已经存在相应的年份分区,则数据会被追加到该分区。
6. INSERT OVERWRITE 方式
语法:
INSERT OVERWRITE TABLE table_name [PARTITION (partition_col = 'value' ...)]
SELECT ... FROM source_table WHERE ...;
示例:
INSERT OVERWRITE TABLE sales_data PARTITION (year = 2023)
SELECT * FROM staging_sales WHERE sale_date >= '2023-01-01';
解析:
- 该语句会覆盖
sales_data表中year=2023分区的数据,插入新数据。 - 如果分区已经存在,原有数据会被删除,新的数据将替代它。
二、更新操作UPDATE 和删除操作 DELETE
数仓中的数据存在即有意义,一般不会进行更新和删除操作,虽然公司不用但一般都有这些功能,了解即可,反正我没用过
更新和删除操作的条件
-
表必须为分桶表:
- 表格需要使用分桶(Bucketing),这可以提高数据的管理和查询效率。
-
数据存储格式:
- 表格的数据必须存储为 ORC 格式,而不能是文本格式。ORC 格式支持 ACID 操作的事务特性。
-
事务支持:
- 表格必须启用事务支持,确保可以进行 ACID 操作。通常在创建表时设置属性
transactional='true'。
- 表格必须启用事务支持,确保可以进行 ACID 操作。通常在创建表时设置属性
配置 Hive 为 ACID 模式
-
启用并发支持:
SET hive.support.concurrency=true; -
设置事务管理器:
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; -
启用 ACID 语法支持:
SET hive.exec.dynamic.partition.mode=nonstrict;
示例
以下是创建满足这些条件的表的示例:
CREATE TABLE your_table_name (column1 INT,column2 STRING,column3 STRING
)
CLUSTERED BY (column1) INTO N BUCKETS -- 分桶
STORED AS ORC -- 使用 ORC 存储格式
TBLPROPERTIES ('transactional'='true'); -- 启用事务
1. UPDATE
语法:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
示例:
UPDATE sales_data SET sale_amount = sale_amount * 1.1 WHERE sale_date < '2022-01-01';
解析:
- 该语句对
sales_data表中所有在2022-01-01之前的销售记录的sale_amount进行更新,增加 10% 的销售额。 - 注意,Hive 的更新操作在早期版本中并不支持,通常需要在支持 ACID 的 Hive 版本中使用。
2. DELETE
语法:
DELETE FROM table_name WHERE condition;
示例:
DELETE FROM sales_data WHERE sale_date < '2020-01-01';
解析:
- 该语句删除
sales_data表中所有在2020-01-01之前的记录。 - 这个操作同样需要在支持 ACID 的 Hive 版本中执行。
相关文章:
Hive数仓操作(十六)
DML(数据操作语言)指的是用于操作数据的 SQL 语言部分,主要包括对数据的插入、更新、删除等操作。Hive 的 DML语句主要包括 INSERT、UPDATE 和 DELETE 。以下是一些重要的 Hive DML 语句及其解析。 Hive的DML语句 一、 插入操作INSERT 一般…...
第十二届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(第一套)
一.题目分析 (1).题目 (2).题目分析 1.串口功能分析 a.串口接收车辆出入信息:通过查询车库的车判断车辆是进入/出去 b.串口输出计费信息:输出编号,时长和费用 c.计算停车时长是难点&#x…...
MongoDB入门:安装及环境变量配置
一、安装MonggoDB Windows系统安装MongoDB 1、下载MongoDB安装包 访问MongoDB官方网站,选择与Windows系统相匹配的MongoDB Community Server版本进行下载。 Download MongoDB Community Server | MongoDB 2、安装MongoDB 双击下载好的安装包文件,根…...
利用 notepad++ 初步净化 HaE Linkfinder 规则所提取的内容(仅留下接口行)
去掉接口的带参部分 \?.*去掉文件行 .*\.(docx|doc|xlsx|xls|txt|xml|html|pdf|ppt|pptx|odt|ods|odp|rtf|md|epub|css|scss|less|sass|styl|png|jpg|jpeg|gif|svg|ico|bmp|tiff|webp|heic|dds|raw|vue|js|ts|mp4|avi|mov|wmv|mkv|flv|webm|mp3|wav|aac|flac|ogg|m4a).*(\r\…...
RCE(remote command/code execute)远程命令注入
远程命令注入RCE RCE(remote command/code execute,远程命令执行)漏洞,一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给…...
一篇关于密码学的概念性文章
文章目录 1. 引言2. 加密学基本概念3. 加密算法的类型3.1 对称密钥加密(SKC)3.2 公钥密码学3.3 哈希函数3.4. 为什么需要三种加密技术?3.5 密钥长度的重要性4. 信任模型4.1 PGP信任网络4.2 Kerberos4.3 公钥证书和证书颁发机构4.4 总结5. 密码算法的实际应用5.1 密码保护5.2…...
什么是汽车中的SDK?
无论是在家里使用预制菜包做一顿大厨级别的晚餐,还是使用IKEA套组装配出时尚的北欧风桌子,我们都熟悉这样一种概念:比起完全从零开始,使用工具包可以帮助我们更快、更高效地完成一件事。 在速度至关重要的商业软件领域࿰…...
利用CRITIC客观权重赋权法进行数值评分计算——算法过程
1、概述 CRITIC客观评价法是一种基于指标的对比强度和指标之间的冲突性来确定指标客观权数的方法。 该方法适用于判断数据稳定性,并且适合分析指标或因素之间有着一定的关联的数据。 CRITIC方法的基本原理包括两个主要概念:对比强度和指标之间的…...
一个月学会Java 第4天 运算符和数据转换
Day4 运算符和数据转换 今天来讲运算符,每个运算符的作用和现象,首先我们先复习一下数据类型, day2讲过基本数据类型有八种,int、short、long、byte、char、boolean、float、double,分别为四个整型、一个字符型、一个布…...
Stream流的终结方法(一)
1.Stream流的终结方法 2.forEach 对于forEach方法,用来遍历stream流中的所有数据 package com.njau.d10_my_stream;import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.function.Consumer; import java.util…...
GO网络编程(二):客户端与服务端通信【重要】
本节是新知识,偏应用,需要反复练习才能掌握。 目录 1.C/S通信示意图2.服务端通信3.客户端通信4.通信测试5.进阶练习:客户端之间通信 1.C/S通信示意图 客户端与服务端通信的模式也称作C/S模式,流程图如下 其中P是协程调度器。可…...
快速熟悉Nginx
一、Nginx是什么? Nginx是一款高性能、轻量级的Web服务器和反向代理服务器。 特点:Nginx采用事件驱动的异步非阻塞处理框架,内存占用少,并发能力强,资源消耗低。功能:Nginx主要用作静态文件服…...
VikParuchuri/marker 学习简单总结
核心代码 VikParuchuri/marker 的核心是使用https://github.com/VikParuchuri/surya的 pdf 模型,注意不仅仅是ocr,在marker的代码里面有标注ocr 是option的。强制OCR 要设置:OCR_ALL_PAGES=true核心代码就是convert.py def convert_single_pdf(fname: str,model_lst: List,…...
【AI知识点】词嵌入(Word Embedding)
词嵌入(Word Embedding)是自然语言处理(NLP)中的一种技术,用于将词语或短语映射为具有固定维度的实数向量。这些向量(嵌入向量)能够捕捉词语之间的语义相似性,即将语义相近的词映射到…...
Python从入门到高手5.1节-Python简单数据类型
目录 5.1.1 理解数据类型 5.1.2 Python中的数据类型 5.1.3 Python简单数据类型 5.1.4 特殊的空类型 5.1.5 Python变量的类型 5.1.6 广州又开始变热 5.1.1 理解数据类型 数据类型是根据数据本身的性质和特征来对数据进行分类,例如奇数与偶数就是一种数据类型。…...
Hbase要点简记
Hbase要点简记 Hbase1、底层架构2、表逻辑结构 Hbase HBase是一个分布式的、列式的、实时查询的、非关系型数据库,可以处理PB级别的数据,吞吐量可以到的百万查询/每秒。主要应用于接口等实时数据应用需求,针对具体需求,设计高效率…...
RabbitMQ的各类工作模式介绍
简单模式 P: ⽣产者, 也就是要发送消息的程序 C: 消费者,消息的接收者 Queue: 消息队列, 图中⻩⾊背景部分. 类似⼀个邮箱, 可以缓存消息; ⽣产者向其中投递消息, 消费者从其中取出消息.特点: ⼀个⽣产者P,⼀个消费者C, 消息只能被消费⼀次. 也称为点对点(Point-to-…...
李宏毅深度学习-图神经网络GNN
图卷积的开源代码网站DGL 好用的还是 GAT, GIN(指出最好的卷积 就是 hi 邻居特征(而且只能用 sum)) Introduction GNN 可以理解为是由 Graph(图) Nerual Networks 组合而成的,图结构应该都在数据结构与…...
Redis篇(缓存机制 - 分布式缓存)(持续更新迭代)
目录 一、单点 Redis 的问题 1. 数据丢失问题 2. 并发能力问题 3. 故障恢复问题 4. 存储能力问题 5. 四种问题的解决方案 二、Redis持久化(两种方案) 1. RDB持久化 1.1. 简介 1.2. 执行时机 save命令 bgsave命令 停机时 触发RDB条件 1.3. …...
python交互式命令时如何清除
在交互模式中使用Python,如果要清屏,可以import os,通过os.system()来调用系统命令clear或者cls来实现清屏。 [python] view plain copy print? >>> import os >>> os.system(clear) 但是此时shell中的状态是:…...
微信小游戏安全漏洞深度剖析:从反编译到协议篡改
1. 微信小游戏安全风险全景图 微信小游戏凭借即点即玩的特性迅速占领市场,但很多开发者对安全防护的重视程度远远不够。我见过太多团队把精力全放在玩法创新上,结果上线三天就被破解的案例。常见的安全威胁主要来自三个方向:客户端篡改、协议…...
亚洲美女-造相Z-Turbo可部署方案:适配信创环境(麒麟OS+昇腾910B)可行性验证
亚洲美女-造相Z-Turbo可部署方案:适配信创环境(麒麟OS昇腾910B)可行性验证 今天我们来聊聊一个挺有意思的话题:怎么把一个专门生成亚洲美女图片的AI模型,部署到咱们国产的信创环境里。这个模型叫“亚洲美女-造相Z-Tur…...
AI图像增强:3步实现低清图片修复的开源跨平台工具
AI图像增强:3步实现低清图片修复的开源跨平台工具 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI Real-ESRGAN-GUI是一款基于Flutter开发的开源AI图像增强工具…...
基于计算机网络原理优化DeepSeek-OCR 2的分布式部署
基于计算机网络原理优化DeepSeek-OCR 2的分布式部署 最近在帮一个客户做文档智能处理系统,他们每天要处理几十万份PDF文档,包括合同、报告、发票等各种格式。单机版的DeepSeek-OCR 2虽然效果不错,但处理速度完全跟不上业务需求。客户那边催得…...
当触控板遇见鼠标:一场被重构的滚动革命
当触控板遇见鼠标:一场被重构的滚动革命 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在MacBook Pro的触控板上轻扫手指,网页随指尖方向自然滚动&#…...
传统文化与现代AI结合:Guohua Diffusion国风绘画商业应用案例
传统文化与现代AI结合:Guohua Diffusion国风绘画商业应用案例 1. 国风绘画生成工具概述 Guohua Diffusion是一款专为国风绘画设计的本地生成工具,基于原生Guohua-Diffusion模型开发。这款工具完美融合了中国传统绘画艺术与现代AI技术,为艺术…...
ESP32驱动MT6826S磁编码器:从接线防烧到实时速度计算(附完整Arduino库)
ESP32与MT6826S磁编码器实战指南:安全接线与高效数据采集 1. 硬件连接:避开那些可能毁掉你项目的陷阱 MT6826S磁编码器作为一款高精度角度测量器件,在机器人关节控制、无人机云台稳定等场景中表现优异。但许多开发者第一次接触这款编码器时&a…...
G-Helper终极指南:如何用轻量级工具优化华硕笔记本性能与电池健康
G-Helper终极指南:如何用轻量级工具优化华硕笔记本性能与电池健康 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF…...
Python自动化脚本:从零构建《三国杀》钓鱼辅助
1. 环境准备:搭建自动化钓鱼的基石 想要实现《三国杀》钓鱼自动化,首先需要搭建一个稳定的开发环境。我推荐使用雷电模拟器9作为游戏运行平台,它不仅对Android游戏兼容性好,而且提供了丰富的调试功能。记得在安装时选择非vivo手机…...
AI结对编程:与快马AI对话式迭代,智能优化你的系统ER图设计
AI结对编程:与快马AI对话式迭代,智能优化你的系统ER图设计 最近在做一个员工管理系统的数据库设计,发现ER图设计是个需要反复推敲的过程。传统方式下,每次修改都要手动调整图形,效率很低。直到尝试了InsCode(快马)平台…...
