如何导出hive中的数据

从Hive中导出数据,写入到可以直接使用的文件,方法如下:

导出到本地

方法一:使用 linux 命令
可以使用 hive -e 或者 -f 命令,其中 -e 表示直接执行后面跟的参数sql,-f 表示执行文件中所有的sql。

$ hive -e "select * from dev.test_table limit 10" > hive_result

这个命令会将 select * from dev.test_table limit 10 的结果写入到 hive_result 本地文件中,每一列用 \t 相连接。

$ cat hive_sql 
select * from dev.test_table limit 10;
select sku_id from dev.test_table limit 10;
$ hive -f hive_sql > hive_result2

这个命令会将两个sql的结果依次写入到 hive_result2 本地文件中,每一列用 \t 相连接。两个 sql 的列数可以不同。

方法二:使用 hive 命令

hive> insert overwrite local directory 'hive_result3'
    > select * from dev.test_table limit 10;

这个命令会将结果写入到 hive_result3 文件夹下,如 hive_result3/000000_0 。每一列用 ^A 相连接。
如果不想用 ^A 分割,可以修改列之间的分隔符,如:

hive> insert overwrite local directory 'hive_result4'
    > row format delimited
    > fields terminated by '\t'
    > select * from dev.test_table limit 10;

这个命令会将结果写入到 hive_result4/000000_0 ,每一列用 \t 相连接。

备注:
[row format delimited]关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。
比如:

ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'

表示不同列之间用一个\001分隔,集合(例如array, map)的元素之间以\002分隔,map中key和value用\003分隔。

导出到HDFS

使用 linux 命令实现:

hive> insert overwrite directory '/user/test'
    > select * from dev.test_table limit 10;

和导入数据到本地文件系统类似,但是少了 local 。这个命令将会在 HDFS/user/test 目录下保存导出来的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值