在hive的日常使用中,经常需要将hive表中的数据导出来,虽然hive提供了多种导出方式,但是面对不同的数据量、不同的需求,如果随意就使用某种导出方式,可能会导致导出时间过长,导出的结果不满足需求,甚至造成集群资源不必要的浪费。因此本文主要对hive支持的几种导出方式的使用进行整理,并给出每种导出方式的使用场景,便于指导操作者能够选取最佳的导出方式。
利用insert overwrite的方式,将查询结果导出到本地或HDFS
(1)导出到本地文件系统
示例如下:
insert overwrite local directory '/home/data/' select * from hive_table;
(2)导出到HDFS
导入到HDFS和导入本地文件类似,去掉HQL语句的LOCAL就可以了。
示例如下:
insert overwrite directory '/home/data/' select * from hive_table;
利用insert overwrite将查询结果导出本地或hdfs的方式可以指定导出的数据格式和字段的分割符,示例如下:
insert overwrite local directory '/home/data/' select * from hive_table
row format delimited fields terminated by ‘\t’ #字段间用\t分割
stored as textfile; #导出文件的存储格式为textfile
使用场景:
1) 由于这种方式导出数据时会启动MApReduce任务来完成导出