hive数据导出至本地文件,如何指定分隔符

有时候需要将hive库中的部分数据导入至本地,这样子做可视化和小规模的数据挖掘实验都是比较方便的。数据导入至本地的HQL语法如下:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1;
但是hive对字段分隔时默认使用的分隔符是^A,使用文本编辑器打开文件显示出来就是乱码,同时,后续提取字段值时需要指定这个特殊的分隔符,在python中使用line.split('\x01')来进行切分
在java中split("\\u0001")来进行切分。

网上看到的方案都是上述这种使用默认分隔符进行切分的,不管是数据查看还是程序调试,都不太方便。但是,既然hive支持在建表的时候指定字段分隔符,hive在数据导出时应该也支持的。HQL建表时指定分隔符的语法为:

	CREATE TABLE u_data (
  		userid INT,
  		movieid INT,
  		rating INT,
  		unixtime STRING)
	ROW FORMAT DELIMITED
	FIELDS TERMINATED BY '\t';
想必在数据导出时,应该可以ROW FORMAT DELIMITED FIELDS TERMINATED BY 的方式来指定我们自定义的分隔符。于是,实验了一把,结果如我所愿。

用户指定分隔符来进行数据导出,比如我们会使用\t进行字段分割,那么HQL语法如下:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 

select_statement1;


最后,只有在hive0.12及以上版本才支持该语法哦,hive0.12以下版本的,请自行探索吧。


  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值