Hive数据导出为csv、tsv文件的几种方法

Hive数据导出csv,tsv
  • 第一种(推荐)
hadoop fs -cat hdfs_path/* |tr "\t" "," > file_path/file_name.csv
  • PS:
    • ‘|tr “\t” “,”’ 将数据分隔符 制表符 替换为 “,”.
    • hive在hdfs中存储可能是\001分割,替换\t即可.
    • 数据中包含","会导致.csv文件不能正确解析.这时建议改为.tsv文件(制表符分割).
    • hdfs中== 空值 采用 \N 存储,可以使用 |tr -d “\\\N” 变为正确的 空值 ==.
    • 导出数据中没有分区字段,可以在hive表中添加一个分区字段.
  • 第二种(不建议)
insert into(或overwrite) local directory 'path' row format delimited fields terminated by ',' select * from db_name.table_name;

PS:使用overwrite时一定要小心,会重写覆盖整个文件夹。

  • 第三种(不建议)
hive -e "set hive.cli.print.header=true; select * from db_name.table_name8" | sed 's/[\t]/,/g'  > file_name.csv

PS:这种会把Hive启动日志放入数据中,最后也没找到办法去除这些日志。

  • 总结:第二、三种方式是网络上比较容易查到的方式,但用起来不是很好,这里记录一下弊端与解决方法。csv,tsv不包含字段名称与对应信息,这点还是很不好的(不过这次也够用了)。查了一下hive导出成json需要编写udf函数。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值