linux查询hive sql输出文件,数据库-如何将HiveQL查询的结果输出到CSV?

数据库-如何将HiveQL查询的结果输出到CSV?我们希望将Hive查询的结果放入CSV文件。 我认为该命令应如下所示:insert overwrite directory '/home/output.csv' select books from table;当我运行它时,它表示已成功完成,但我永远找不到该文件。 如何找到该文件,或者应该以其他方式提取数据?谢谢!15个解决方案139 votes尽...
摘要由CSDN通过智能技术生成

数据库-如何将HiveQL查询的结果输出到CSV?

我们希望将Hive查询的结果放入CSV文件。 我认为该命令应如下所示:

insert overwrite directory '/home/output.csv' select books from table;

当我运行它时,它表示已成功完成,但我永远找不到该文件。 如何找到该文件,或者应该以其他方式提取数据?

谢谢!

15个解决方案

139 votes

尽管可以使用LOCAL从Hive中获取数据,但是对于您的特定情况,它可能不是最佳方法。 首先让我解释INSERT OVERWRITE的功能,然后再描述从Hive表中获取tsv文件的方法。

根据手册,您的查询会将数据存储在HDFS的目录中。 格式将不是csv。

写入文件系统的数据被序列化为文本,列之间用^ A分隔,行用换行符分隔。 如果任何列都不是原始类型,那么这些列将序列化为JSON格式。

稍作修改(添加LOCAL关键字)会将数据存储在本地目录中。

INSERT OVERWRITE LOCAL DIRECTORY '/home/lvermeer/temp' select books from table;

当我运行类似的查询时,输出结果如下所示。

[lvermeer@hadoop temp]$ ll

total 4

-rwxr-xr-x 1 lvermeer users 811 Aug 9 09:21 000000_0

[lvermeer@hadoop temp]$ head 000000_0

"row1""col1"1234"col3"1234FALSE

"row2""col1"5678"col3"5678TRUE

就个人而言,我通常会在命令行上直接通过Hive运行此类查询,然后将其通过管道传输到本地文件中,如下所示:

hive -e 'select books from table' > /home/lvermeer/temp.tsv

这给了我一个可以用制表符分隔的文件。 希望对您也有帮助。

基于此补丁3682,我怀疑使用Hive 0.11时可以使用更好的解决方案,但我自己无法对此进行测试。 新语

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值