Hive-DML详解(超详细)
文章目录
- 前言
- HiveQL的数据操作语言(DML)
- 1. 插入数据
- 1.1 直接插入固定值
- 1.2 插入查询结果
- 2. 更新数据
- 3. 删除数据
- 3.1 删除整个分区
- 4. 查询数据
- 4.1 基本查询
- 4.2 条件筛选
- 4.3 聚合函数
- 总结
前言
本文将介绍HiveQL的数据操作语言(DML),包括插入数据、更新数据、删除数据和查询数据等常见操作。我们将详细讨论每个操作的语法和示例,帮助您更好地理解和使用HiveQL。
HiveQL的数据操作语言(DML)
1. 插入数据
在Hive中,可以使用INSERT INTO语句将数据插入到表中。以下是一些常见的插入数据的方法:
1.1 直接插入固定值
INSERT INTO table_name [PARTITION (partition_column = partition_value)]
VALUES (value1, value2, ...);
table_name:要插入数据的目标表名。PARTITION(可选):如果目标表有分区,可以指定分区列和对应的值。VALUES:要插入的具体数值。
例如,假设我们有一个名为"employees" 的表,并且包含了"id"、 “name” 和 "salary"等列。我们想要向该表中添加一条新记录:
INSERT INTO employees VALUES (1001, 'John Doe', 5000);
1.2 插入查询结果
除了直接指定固定值外,还可以通过查询结果来进行动态地插 入操作。
INSERT INTO table_name [PARTITION(partition_column = partition_value)]
SELECT column_list FROM source_table WHERE condition;
table_name:要将查询结果描绘到其中 的目标 表名。column_list: 要从源 表选择并 描绘 到 目 标 表 中 的 列 名称列表。- 如果不提供列清单,则默认情况下会选择所有匹配条件行上存在于两个 表中的列。
source_table:要从中选择数据的源表名。condition(可选):用于筛选源表数据的条件。
例如,假设我们有一个名为"employees_source" 的表,其中包含了员工信息。我们想要将薪资大于5000元的员工插入到目标 表 “employees” 中:
INSERT INTO employees SELECT * FROM employees_source WHERE salary > 5000;
2. 更新数据
在Hive中更新已存在于表格内部或者外部存储系统上某个特定行或者多行记录需要使用UPDATE语句。然而,在默认情况下,Hive不支持直接更新操作。
但是你仍然可以通过以下步骤实现类似于更新操作:
步骤一:创建一个新临时表temp_table来保存需要修改后结果集。
CREATE TABLE temp_table AS SELECT * FROM original_table;
步骤二:删除原始table并重命名temp_table为original_ table.
DROP TABLE original_table;
ALTER TABLE temp_table RENAME TO original_table ;
这样就完成了模拟更新操作。
3. 删除数据
Hive不支持使用DELETE语句来删除数据。
3.1 删除整个分区
如果您希望删除整个分区及其所有数据,则可以使用 ALTER TABLE 命令。
ALTER TABLE table_name DROP PARTITION (partition_column = partition_value);
table_name:要删除分区的目标表名。partition_column:分区列名称。partition_value:要删除的特定分区值。
例如,假设我们有一个名为"employees" 的表,其中包含了按照部门进行 分 区 的 数据。我们想要 删除 部 门 为 “IT” 的 所有员工记录:
ALTER TABLE employees DROP PARTITION (department = 'IT');
4. 查询数据
在Hive中,可以使用SELECT语句从表中检索数据。以下是一些常见的查询操作:
4.1 基本查询
最基本和常见的方式是使用简单 SELECT 语句来选择所有列或特定列。
-- 检索所有列
SELECT * FROM table_name;-- 检索特定列
SELECT column1, column2, ... FROM table_name;
例如,假设我们有一个名为"employees" 的表,并且包含了"id"、 “name” 和 "salary"等 列 。我们想要检 索该 表 中 所有员工记录:
SELECT * FROM employees;
4.2 条件筛选
您可以通过WHERE子句添加条件来筛选所需行。
-- 使用 WHERE 子 句 进 行 条件 筛选
SELECT column_list FROM table_name WHERE condition ;
column_list: 要选择并返回结果集中显示 的 列 名称列表。table_ name:要从其进行数据检索 的目标表名。condition:用于指定满足哪些行应该被返回到结果集中 的条件。
例如,假设我们只想获取薪资大于5000元的员工记录:
SELECT * FROM employees WHERE salary > 5000;
4.3 聚合函数
Hive支持各种聚合函数,如SUM、AVG、COUNT等。
SELECT aggregate_function(column) FROM table_name [WHERE condition];
aggregate_function:要应用的聚合函数,如SUM、AVG、COUNT等。column:要计算的列名或表达式。table_ name(可选):要从中进行数据检索 的目标表名。condition(可选):用于筛选行的条件。
例如,我们想计算员工薪资总和:
SELECT SUM(salary) FROM employees;
总结
在本文中,我们学习了如何使用HiveQL进行各种常见的数据操作。首先,我们了解了如何插入固定值或通过查询结果来插入新记录。然后,我们探讨了模拟更新操作的方法,并介绍了删除整个分区的方式。
最后,在查询方面,我们学习了基本检索所有列或特定列以及条件筛选行记录的方法。此外,还介绍了聚合函数用于计算统计信息。
希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!
相关文章:
Hive-DML详解(超详细)
文章目录 前言HiveQL的数据操作语言(DML)1. 插入数据1.1 直接插入固定值1.2 插入查询结果 2. 更新数据3. 删除数据3.1 删除整个分区 4. 查询数据4.1 基本查询4.2 条件筛选4.3 聚合函数 总结 前言 本文将介绍HiveQL的数据操作语言(DML&#x…...
PHP实现可示化代码
PHP是一种服务器端脚本语言,它主要用于开发Web应用程序。虽然PHP本身不提供可视化代码的功能,但你可以使用一些第三方库和工具来实现可视化代码。 以下是一些常用的PHP可视化代码的工具和库: 1. Graphviz:Graphviz是一个开源的可…...
useState语法讲解
useState语法讲解 语法定义 const [state, dispatch] useState(initData)state:定义的数据源,可视作一个函数组件内部的变量,但只在首次渲染被创造。dispatch:改变state的函数,推动函数渲染的渲染函数。dispatch有两…...
堆与二叉树(下)
接着上次的,这里主要介绍的是堆排序,二叉树的遍历,以及之前讲题时答应过的简单二叉树问题求解 堆排序 给一组数据,升序(降序)排列 思路 思考:如果排列升序,我们应该建什么堆&#x…...
讲诉JVM
jvm是Java代码运行的环境,他将java程序翻译成为机器可以可以识别的机器码,可以跨平台运行如linuc或者windos 简单说一下我对jvm运行的理解, 首先我们运行程序的时候,类加载器会将类按需加载到元空间/方法区里面 …...
8、SpringCloud高频面试题-版本1
1、SpringCloud组件有哪些 SpringCloud 是一系列框架的有序集合。它利用 SpringBoot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 SpringBoot 的开发风格做到一键启…...
PHP案例代码:PHP如何提供下载功能?
对Web开发人员来说,“下载”功能是一个非常常见的需求。在网站中提供文件下载,通常用于提供用户手册、软件升级、音乐、视频等各种资源文件。本教程将向您介绍如何实现一个PHP下载功能,同时告诉浏览器文件名称、文件大小、文件类型,并统计下载次数。 首先,我们需要了解一些…...
The Cherno C++笔记 03
目录 Part 07 How the C Linker Works 1.链接 2.编译链接过程中出现的错误 2.1 缺少入口函数 注意:如何区分编译错误还是链接错误 注意:入口点可以自己设置 2.2 找不到自定义函数 2.2.1缺少声明 2.2.2自定义函数与引用函数不一致 2.3 在头文件中放入定义 …...
蓝牙物联网与嵌入式开发如何结合?
蓝牙物联网与嵌入式开发可以紧密结合,以实现更高效、更智能的物联网应用。以下是一些结合的方式: 嵌入式开发为蓝牙设备提供硬件基础设施和控制逻辑:嵌入式系统可以利用微处理器和各种外设组成的系统,为蓝牙设备提供硬件基础设施和…...
前端面试——JavaScript面经(持续更新)
一、数据类型 1. JavaScript用哪些数据类型、它们有什么区别? JavaScript共有八种数据类型,分别包括5种基本数据类型和3种非基本数据类型。 基本数据类型:Undefined、Null、Boolean、Number、String。非基本数据类型:Object、S…...
微前端——无界wujie
B站课程视频 课程视频 课程课件笔记: 1.微前端 2.无界 现有的微前端框架:iframe、qiankun、Micro-app(京东)、EMP(百度)、无届 前置 初始化 新建一个文件夹 1.通过npm i typescript -g安装ts 2.然后可…...
连锁便利店管理系统有什么用
连锁便利店管理系统对于连锁便利店的运营和管理非常有用。以下是一些常见的用途: 1. 库存管理:连锁便利店通常需要管理多个门店的库存,管理系统可以帮助实时掌握各个门店的库存情况,包括商品数量、进货记录、库存调拨等。这样可以…...
Vue 的两种实现:VSCode 中配置 vue 模板快捷方式的过程
1、创建配置文件: 其一、打开 VSCode ,CtrlShiftP, 打开搜索框: 其二、输入:user, 并点击进去 Snippets:Configure User Snippets 其三、输入 vue3js 并回车: 其四、打开项目,发现配置文件 vue3js.code-sn…...
electron 切换至esm
前言 好消息,经过不知道多少年的讨论。 electron28.0.0开始(23.08.31),默认支持esm了。 see https://github.com/electron/electron/issues/21457 使用方法 升级至electron^28.0.0简单地在package.json中添加"type":…...
【新版】软考 - 系统架构设计师(总结笔记)
个人总结学习笔记,仅供参考!!!! →点击 笔者主页,欢迎关注哦(互相学习,共同成长) 笔记目录 📢【系统架构设计系列】系统架构设计专业技能 计算机组成与结构操作系统信…...
Spring MVC 方法中添加参数、HttpServletRequest 和 HttpServletResponse 对象
在这个例子中,我们添加了 HttpServletRequest 和 HttpServletResponse 对象作为控制器方法的参数。这样,你就可以在方法内部同时访问请求参数、请求对象和响应对象,从而进行更灵活的 HTTP 请求和响应处理。 RestController public class MyC…...
单片机的RTC获取网络时间
理解网络同步校准RTC的原理需要考虑NTP、SNTP、RTC这三个关键组件的作用和交互。下面详细解释这个过程: 1. NTP(Network Time Protocol): 协议目的:NTP是用于同步计算机和设备时钟的协议。它通过在网络上与时间服务器通…...
Android 13 内置可卸载的搜狗输入法
环境 系统:Android 13 芯片厂商:展锐 需求 默认只有英文输入法,没有中文,需要中文输入法,且可以卸载的。 实测为搜狗输入法,百度等其它输入法也同样适用。 实现 在SDK目录中创建packages/apps/SogouIM…...
持续集成交付CICD:GitLabCI 封装Python类 并结合 ArgoCD 完成前端项目应用发布
目录 一、实验 1. 环境 2. Python代码实现获取文件 3.Python代码实现创建文件 4.Python代码实现更新文件 5.GitLab更新库文件与运行流水线 6.ArgoCD 完成前端项目应用发布 二、问题 1.Python获取GitLab指定仓库文件报错 2. K8S master节点运行Python代码报错 一、实验…...
第十三章 常用类(Math 类、Arrays 类、System类、Biglnteger 和BigDecimal 类、日期类)
一、Math 类(P481) Math 类包含,用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 (1)abs:绝对值 (2)pow:求幂 (3)c…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...
基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...
