**Hive命令实战操作之 – 数据操作
提示:本文章内容取自来源: 拉勾教育大数据高薪训练营
文章目录
前言
提示:本文章对于初学者准备,希望对大家有所帮助。如果有什么建议和疑问,请留言给我,我会不断完成完善。
HQL操作之–数据操作
1、数据导入
1.1、装载数据(Load)
LOAD DATA [LOCAL] INPATH 'filepath'
[OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1,
partcol2=val2 ...)]
- LOCAL:
LOAD DATA LOCAL … 从本地文件系统加载数据到Hive表中。本地文件会拷 贝到Hive表指定的位置 LOAD
DATA … 从HDFS加载数据到Hive表中。HDFS文件移动到Hive表指定 的位置 - INPATH:加载数据的路径
- OVERWRITE:覆盖表中已有数据;否则表示追加数据
PARTITION:将数据加载到指定的分区
-- 加载本地文件到hive(tabA)
load data inpath '/home/hadoop/data/sourceA.txt' into table tabA;
-- 加载hdfs文件到hive(tabA)
load data inpath 'data/sourceA.txt' into table tabA;
-- 加载数据覆盖表中已有数据
load data inpath 'data/sourceA.txt' overwrite into table tabA;
-- 创建表时加载数据
hdfs dfs -mkdir /user/hive/tabB
hdfs dfs -put sourceA.txt /user/hive/tabB
CREATE TABLE tabB (
id INT
,name string
,area string
) row format delimited fields terminated by ','
Location '/user/hive/tabB';
1.2、插入数据(Insert)
-- 已有分区表tabC ,插入数据
insert into table tabC partition(month='202001') values (5, 'wangwu', 'BJ'), (4, 'lishi', 'SH'), (3,'zhangsan', 'TJ');
-- 插入查询的结果数据
insert into table tabC partition(month='202002') select id, name, area from tabC where month='202001';
-- 多表(多分区)插入模式
from tabC
insert overwrite table tabC partition(month='202003')
select id, name, area where month='202002'
insert overwrite table tabC partition(month='202004')
select id, name, area where month='202002';
1.3、创建表并插入数据(as select)
-- 根据查询结果创建表
create table if not exists tabD as select * from tabC;
1.4、使用import导入数据
import table student2 partition(month='201709') from '/user/hive/warehouse/export/student';
2 、 数据导出
2.1、将查询结果导出到本地
insert overwrite local directory '/home/hadoop/data/tabC' select * from tabC;
2.2、 将查询结果格式化输出到本地
insert overwrite local directory '/home/hadoop/data/tabC2' row format delimited fields terminated by ' ' select * from tabC;
2.3、将查询结果导出到HDFS
insert overwrite directory '/user/hadoop/data/tabC3' row format delimited fields terminated by ' ' select * from tabC;
2.4、dfs 命令导出数据到本地
本质是执行数据文件的拷贝
dfs -get /user/hive/warehouse/mydb.db/tabc/month=202001 /home/hadoop/data/tabC4
2.5、hive 命令导出数据到本地
执行查询将查询结果重定向到文件
hive -e "select * from tabC" > a.log
-- export 导出数据到HDFS。使用export导出数据时,不仅有数还有表的元数据信
息
export table tabC to '/user/hadoop/data/tabC4';
-- export 导出的数据,可以使用 import 命令导入到 Hive 表中
小结
小结:
数据导入:load data / insert / create table … as select … / import table
数据导出:insert overwrite … diretory … / hdfs dfs -get / hive -e “select …” >
a.log / export table …