千家信息网

Hive如何实现数据装载

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关Hive如何实现数据装载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。既然Hive没有行级别的数据插入、数据更新和删除操作,那么往表中装
千家信息网最后更新 2025年12月02日Hive如何实现数据装载

这篇文章将为大家详细讲解有关Hive如何实现数据装载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

既然Hive没有行级别的数据插入、数据更新和删除操作,那么往表中装载数据的唯一途径就是使用一种"大量"的数据装载操作。或者通过其他方式仅仅将文件写入到正确的目录下。

第一种方式之前介绍过了,LOAD,一条命令一笔带过

LOAD DATA LOCAL INPATH /data/ OVERWRITE INTO TABLE ods_login PARTITION (dt='2020-03-01');

第二种方式通过查询语句向表中插入数据

INSERT语句允许用户通过查询语句向目标表中插入数据。依旧使用前章中表 ods_login作为例子,假设我们的ods_login已经通过load有数据了,数仓的下一层是dwd,那么我们需要将数据从ods_login写入到dwd_login,像这样(省略掉数据清洗逻辑)

INSERT OVERWRITE TABLE dwd_loginPARTITION (dt='20200302')SELECT * FROM ods_loginWHERE dt='20200302'

这里使用了 OVERWRITE关键字,因此之前分区中的内容(如果是非分区表,就是之前表中的内容)将会被覆盖掉。这里如果没有使用OVERWRITE关键字或者使用INTO关键字替换掉它的话,那么Hive 将会以追加的方式写入数据而不会覆盖掉之前已经存在的内容。

单个査询语句中创建表并加载数据

用户同样可以在一个语句中完成创建表并将查询结果载入这个表的操作:

CREATE TABLE dwd_loginAS SELECT name, salary, addressFROM ods_loginWHERE date='20200302'

这张表只含有dwd_login表中name、salary和address3个字 段的信息。新表的模式是根据SELECT语句来生成的。

使用这个功能的常见情况是从一个大的宽表中选取部分需要的数据集。

这个功能不能用于外部表。可以回想下使用ALTER TABLE语句可以为外部表"引用" 到一个分区,这里本身没有进行数据"装载",而是将元数据中指定一个指向数据的 路径。

然而,如果表ods_login非常大,而且需要从这个表中不同字段的数据做不同的处理,然后写入不同的表中的话,就没有那么简单了。好在 Hive提供了另一种INSERT语法, 即只扫描一次输入数据,然后按多种方式进行划分。如下:

FROM ods_loginINSERT OVERWRITE TABLE dwd_loginPARTITION (dt='20200302')SELECT * WHERE event='login' and dt='20200302'INSERT OVERWRITE TABLE dwd_loginPARTITION (dt='20200303')SELECT * WHERE event='login' and dt='20200303'INSERT OVERWRITE TABLE dwd_loginPARTITION (dt='20200304')SELECT * WHERE event='login' and dt='2020030

从ods_login表中读取的每条 记录都会经过一条SELECT ... WHERE ...句子进行判断。这些句子都是独立进行判断的,不是 IF...THEN...ELSE...结构

事实上,通过使用这个结构,源表中的某些数据可以被写入目标表的多个分区中或者不被写入任一个分区中。

如果某条记录是满足某个SELECT ... WHERE ...语句的话,那么这条记录就会被写入 到指定的表和分区中。简单明了地说,每个INSERT子句,只要有需要,都可以插入 到不同的表中,而那些目标表可以是分区表也可以是非分区表。

因此,输入的某些数据可能输出到多个输出位置而其他一些数据可能就被删除掉了。当然,这里可以混合使用INSERT OVERWRITE句式和INSERT INTO句式。

关于"Hive如何实现数据装载"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

数据 语句 方式 装载 不同 内容 关键 关键字 目标 篇文章 分区表 查询 功能 句子 句式 多个 就是 是非 更多 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络技术涉及哪些内容 汽车常用车载网络技术 庭瑞网络技术有限公司招聘 数据库中密码字符串乱码 网络安全地方立法 字符串用逗号隔开查询数据库 昌吉软件开发学院 国家网络安全办公室主任是谁 网络安全类网络工程 网络安全中的认证方法 纬创软件开发部长 gta 服务器手动刷新 江苏林明峰做软件开发 北京酷沃网络技术有限公司 白云区光纤网络技术开发价格多少 辽阳市第二期网络安全大讲堂 串口服务器5211能挂几台设备 小软件开发价格 网络技术入门经典 百度云 挂软件服务器 图书馆网络安全的策划 项目经理 软件开发 笔试 项目中集成数据库访问模块 英语演讲稿有关于网络安全 东至新能源软件开发服务代理品牌 关于数据库查询面试题 网络安全信息方面进行的合作 软件开发管理项目系统管理表单 网络技术工种工资高 数据库自动化巡检脚本
0