赞
踩
hive数据仓库有多种数据导出方法,我在本篇文章中介绍下面的四种方法供大家参考:Insert语句导出、Hadoop命令导出、Hive shell命令导出、Export语句导出。
Hive支持将select查询的结果导出成文件存放在文件系统中。语法格式如下;
注意:导出操作是一个OVERWRITE覆盖操作,慎重。
目录可以是完整的URI。Hive使用hadoop配置变量fs.default.name来决定导出位置;
如果使用LOCAL关键字,则Hive会将数据写入本地文件系统上的目录;
写入文件系统的数据被序列化为文本,默认列之间用\001隔开,行之间用换行符隔开。
代码示例:
- --标准语法:
- INSERT OVERWRITE [LOCAL] DIRECTORY directory1
- [ROW FORMAT row_format] [STORED AS file_format]
- SELECT ... FROM ...
- --Hive extension (multiple inserts):
- FROM from_statement
- INSERT OVERWRITE [LOCAL] DIRECTORY directory1
- ROW FORMAT DELIMITED FIELDS TERMINATED BY ...
- select_statement1
- [INSERT OVERWRITE [LOCAL] DIRECTORY directory2
- ROW FORMAT DELIMITED FIELDS TERMINATED BY ...
- select_statement2] ...
- --1、导出查询结果到HDFS指定目录下
- insert overwrite directory '/test1' select * from users;
- --2、导出时指定分隔符和文件存储格式
- insert overwrite directory '/test1' row format delimited fields terminated by ','
- stored as orc
- select * from users;
- --3、导出数据到本地文件系统指定目录下
- insert overwrite local directory '/home/huser/test1' row format delimited fields terminated by ','
- select * from users;
Hadoop命令将HDFS中的数据导出到本地文件系统指定目录中:
- --在hive客户端执行
- dfs –get /user/hive/warehouse/demo.db/users_default.txt
- /home/root/users.txt
-
- --Linux本地执行
- hadoop fs -get /user/hive/warehouse/demo.db/users_default.txt /home/root/users.txt
1.基本语法:hive -e HQL语句 > filepath
hive –e ' select * from demo.users' > /home/root/test/users.txt
2.基本语法:hive -f 执行脚本 > filepath
将HQL语句存储在执行脚本文件中,将执行脚本文件的执行结果存储在指定目录下的文件中。例如,hivef.sql脚本文件中存储HQL语句“select *from demo.user;”,执行hivef.sql脚本文件中的查询语句,并将查询结果输出到
hive –f ' hive.sql' > /home/root/test/users2.txt
Export语句导出是将Hive表中的数据导出到Hadoop集群的HDFS中的其他目录下:
export table users to ‘/user/hive/warehouse/export’;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。