数据导入
Load 方式向表中装载数据
语法:
load data [loacl] inpath '文件' [overwriter] into table 表名 [partition(指定分区)]
- load data:加载数据
- [loacl]:本地加载,不写表示从 HDFS 上加载,
注意从 HDFS 上加载的数据,原文件会被移动
- inpath ‘文件’:文件路径
- [overwriter]: overwriter 表示覆盖重写
- [partition(指定分区)] :如果是分区表 需要指定分区则 加上
# 从 HDFS 上导入 追加
load data inpath '/student.txt' into table hive_db;
# 从 HDFS 上导入 覆盖
load data inpath '/student.txt' overwrite into table hive_db;
通过查询语句向表中插入数据(Insert)
首先创建一张分区表
create table test_p(
id int,
name string
)
partitioned by (day string)
row format delimited
fields terminated by '\t';
基本插入数据
语法:insert into table 表名 字段 values(值, 值)
# 它会提交一个 MapReduce 任务 hive> insert into table test_p partition(day="08") values(1,"tp"); Query ID = root_20200108180532_9006dc63-78cd-4afc-9527-028387b366aa Total jobs = 3 Launching Job 1 out of 3 Number of reduce tasks is set to 0 since there's no reduce operator ..... Stage-Stage-1: Map: 1 Cumulative CPU: 3.35 sec HDFS Read: 3765 HDFS Write: 79 SUCCESS Total MapReduce CPU Time Spent: 3 seconds 350 msec OK Time taken: 84.034 seconds
基本模式插入(根据单张表查询结果)
# 语法 insert into | overwriter table 指定表 # 结果插入的表 select 字段 from 表名; # 查询的表 # 实例 会跑一个 MapReduce 任务 hive> insert into table test_p partition(day="9") > select * from hive_db; Query ID = root_20200109100135_356015e5-d696-43cd-a6af-68e29fa246e2 Total jobs = 3 Launching Job 1 out of 3 Number of reduce tasks is set to 0 since there's no reduce operator ...... Total MapReduce CPU Time Spent: 2 seconds 350 msec OK Time taken: 79.799 seconds
多插入模式(根据多张表查询结果)
查询的结果字段需要 与 插入的字段对应,不能多也 不能少
# 这个会 提交一个 MapReduce 任务 from hive_db insert into table test_p partition(day="15") select * insert into table test_p partition(day="16") select *;
创表时通过 location 指定加载数据的位置
创建表
create table lo_db( id int, name string ) row format delimited fields terminated by '\t' location '/hive';
上传数据到 /hive 目录下
[root@master ~]# hadoop fs -put st.txt /hive
查看表的数据
hive> select * from lo_db; OK 4 aa 5 bb 6 Time taken: 0.119 seconds, Fetched: 3 row(s)
使用 import 导入数据
数据必须是 export 导出的(应为会有元数据)
语法:import table 表名 from 路径;
表可以不存在
路径下使用 export 导出的所有数据
hive> import table stu1 from '/export'; Copying data from hdfs://192.168.176.65:9000/export/data Copying file: hdfs://192.168.176.65:9000/export/data/student.txt Loading data to table test.stu1 OK Time taken: 0.62 seconds
数据导出
使用 insert 导出数据
语法
insert overwrite [local] directory '/root' --> 导出的路径 去掉 loacl 就是导出到 HDFS
row format delimited fields terminated by '\t' --> 导出的分隔符
select * from hive_db; --> 需要导出的内容
使用
# 执行HQL 跑一个 MR程序 hive> insert overwrite local directory '/root/hive' > row format delimited fields terminated by '\t' > select * from hive_db; Query ID = root_20200115161857_48aa5b8a-1bd4-45b9-9642-9b7135bf9009 Total jobs = 1 ... Copying data to local directory /root/hive Copying data to local directory /root/hive MapReduce Jobs Launched: Stage-Stage-1: Map: 1 Cumulative CPU: 1.91 sec HDFS Read: 3034 HDFS Write: 21 SUCCESS Total MapReduce CPU Time Spent: 1 seconds 910 msec OK Time taken: 77.28 seconds # 查看本地文件 [root@master hive]# pwd /root/hive [root@master hive]# ll 总用量 4 -rw-r--r--. 1 root root 21 1月 15 16:20 000000_0 [root@master hive]# cat 000000_0 1 Bob 2 Black 3 Jeck
使用 Hadoop shell 命令下载数据
hive> dfs -get /hive/st.txt /root/hive;
使用 Hive shell 命令导出
格式 bin/hive -e ‘HQL语句或HQL文件’ > 导出的文件名
[root@master src]# hive -e 'select * from test.hive_db' > /root/hive/a.txt Logging initialized using configuration in jar:file:/usr/local/src/hive/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.properties OK Time taken: 12.103 seconds, Fetched: 3 row(s) # 查看导出wenjian [root@master hive]# cat a.txt 1 Bob 2 Black 3 Jeck [root@master hive]# pwd /root/hive
export 导出数据(不是很常用)
格式: export table 表名 to HDFS路径;
hive> export table hive_db to '/export'; Copying data from file:/usr/local/src/hive/tmpdir/hive/8edfc4e3-3832-43c1-9d4b-d863ef85d0eb/hive_2020-01-15_16-41-17_608_2632318306276412864-1/-local-10000/_metadata Copying file: file:/usr/local/src/hive/tmpdir/hive/8edfc4e3-3832-43c1-9d4b-d863ef85d0eb/hive_2020-01-15_16-41-17_608_2632318306276412864-1/-local-10000/_metadata Copying data from hdfs://192.168.176.65:9000/user/hive/warehouse/test.db/hive_db Copying file: hdfs://192.168.176.65:9000/user/hive/warehouse/test.db/hive_db/student.txt OK Time taken: 0.601 seconds
导出的信息结构
export\
|_ _metadata 元数据文件
|_data\
|_导出的数据
清空表数据
只能清空
内部表(管理表)
数据,不能清空外部表
数据
truncate table 表名
hive> truncate table stu1;
OK
版权声明:《 Hive DML 操作(数据的导入、导出、清空表数据)(不涉及表数据的查询) 》为明妃原创文章,转载请注明出处!
最后编辑:2020-1-19 04:01:08