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时一定要小心,会重写覆盖整个文件夹。文章来源:https://www.toymoban.com/news/detail-615725.html
- 第三种(不建议)
hive -e "set hive.cli.print.header=true; select * from db_name.table_name8" | sed 's/[\t]/,/g' > file_name.csv
PS:这种会把Hive启动日志放入数据中,最后也没找到办法去除这些日志。文章来源地址https://www.toymoban.com/news/detail-615725.html
- 总结:第二、三种方式是网络上比较容易查到的方式,但用起来不是很好,这里记录一下弊端与解决方法。csv,tsv不包含字段名称与对应信息,这点还是很不好的(不过这次也够用了)。查了一下hive导出成json需要编写udf函数。
到了这里,关于Hive数据导出为csv、tsv文件的几种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!