Hive DML 语言学习笔记:数据加载、插入、导出与导入

本文基于 Hive 官方 DML 文档整理,涵盖数据加载、插入、写入文件系统以及导入导出等常用操作。 官方文档:Apache Hive : LanguageManual DML


一、Hive 数据操作语言

1. 将文件加载到表中(常用)

语法:

复制代码
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [INPUTFORMAT 'inputformat' SERDE 'serde'] (3.0 or later)

说明:

  • LOCAL:从本地文件系统加载数据。

  • 不带 LOCAL:从 HDFS 加载数据,类似于 mv 操作。

  • OVERWRITE:覆盖表中已有数据。

  • INTO TABLE:指定目标表。

  • PARTITION:可选,指定分区。 案例:

    -- 创建表
    CREATE TABLE IF NOT EXISTS bigdata.students1(
    id STRING COMMENT '学号',
    name STRING COMMENT '姓名',
    age INT COMMENT '年龄',
    sex STRING COMMENT '性别',
    clazz STRING COMMENT '班级'
    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
    CREATE TABLE IF NOT EXISTS bigdata.students2 LIKE students1;
    -- 加载本地数据到 Hive 表中
    LOAD DATA LOCAL INPATH '/root/sh_code/student.csv' OVERWRITE INTO TABLE students1;
    -- 加载 HDFS 上的数据到 Hive 表,类似于 mv
    LOAD DATA INPATH '/student.csv' OVERWRITE INTO TABLE students2;


2. 将查询数据插入 Hive 表

语法:

复制代码
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;
INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

说明:

  • INSERT OVERWRITE:覆盖目标表中已有数据。

  • INSERT INTO:向目标表中追加数据。 案例:

    INSERT INTO TABLE students5 SELECT * FROM students1;
    INSERT OVERWRITE TABLE students5 SELECT * FROM students1;


3. 通过 SQL 将值插入到表中

语法:

复制代码
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

案例:

复制代码
INSERT INTO TABLE students5 VALUES('100001','张三',25,'1','文科一班');

4. 根据查询结果将数据写入文件系统

语法:

复制代码
INSERT OVERWRITE [LOCAL] DIRECTORY directory1
  [ROW FORMAT row_format] [STORED AS file_format] (Note: Only available starting with Hive 0.11.0)
  SELECT ... FROM ...
Hive extension (multiple inserts):
FROM from_statement
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1
[INSERT OVERWRITE [LOCAL] DIRECTORY directory2 select_statement2] ...

row_format 语法:

复制代码
row_format
  : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
        [NULL DEFINED AS char] (Note: Only available starting with Hive 0.13)

案例:

复制代码
INSERT OVERWRITE LOCAL DIRECTORY '/root/students5'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
SELECT * FROM students5;

5. 导入导出

(1)导出语法
复制代码
EXPORT TABLE tablename [PARTITION (part_column="value"[, ...])]
  TO 'export_target_path' [ FOR replication('eventid') ]

案例:

复制代码
EXPORT TABLE students5 TO '/students5';
(2)导入语法
复制代码
IMPORT [[EXTERNAL] TABLE new_or_original_tablename [PARTITION (part_column="value"[, ...])]]
  FROM 'source_path'
  [LOCATION 'import_target_path']

案例:

复制代码
-- 清空表
TRUNCATE TABLE students1;
-- 导入数据
IMPORT TABLE students1 FROM '/students5';

二、总结

本文整理了 Hive DML 中常用的数据操作,包括:

  • 使用 LOAD DATA 从本地或 HDFS 加载数据到表中;
  • 使用 INSERT INTO / INSERT OVERWRITE 插入查询结果;
  • 使用 INSERT INTO ... VALUES 直接插入值;
  • 使用 INSERT OVERWRITE DIRECTORY 将查询结果写入文件系统;
  • 使用 EXPORT / IMPORT 进行表级数据的导出与迁移。 掌握这些 DML 语句后,就可以在 Hive 中灵活地完成数据的加载、插入、导出和迁移。

参考链接: Apache Hive : LanguageManual DML

相关推荐
kkkkkkkkkk_Z1 小时前
新手自学嵌入式 | 学习日记:ARM内核启动代码、时钟系统(PLL/Prescaler/PFD)与IMX6ULL时钟配置
arm开发·学习
clorinda1 小时前
Hive 窗口函数详解:让数据在分组中完成排名、累计和跨行计算
数据仓库·hive·hadoop
丁希希哇1 小时前
强化学习与偏好学习基础:PPO,DPO,GRPO
人工智能·学习·机器学习·大语言模型
破壁者-燕1 小时前
MLE 基础学习 Transformer
深度学习·学习·transformer
JWASX2 小时前
【agent 开发】agent 开发学习 - LangChain(1)
python·学习·agent
星恒随风2 小时前
Linux进程基础(二):进程调度、上下文切换、O(1)调度器、环境变量与虚拟地址空间
linux·笔记·学习·状态模式
for_ever_love__2 小时前
MySQL 锁与死锁讲透:行锁、间隙锁、Next-Key Lock 与排查方法
mysql·lock·行锁·死锁·间隙锁·排查·next-key
牧羊人.3332 小时前
动手学深度学习 06|学习率调整
人工智能·深度学习·学习
我不会起名字3222 小时前
InnoDB 间隙锁与死锁:两个 UPDATE 互相等待的 3 个原因
数据库·mysql·事务·innodb·锁