当前位置: 首页 > news >正文

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…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

【机器视觉】单目测距——运动结构恢复

ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛&#xf…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线, n r n_r nr​ 根接收天线的 MIMO 系…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...