gpt4 book ai didi

database - 如何将 HiveQL 查询的结果输出到 CSV?

转载 作者:可可西里 更新时间:2023-11-01 14:06:22 25 4
gpt4 key购买 nike

我们想将 Hive 查询的结果放入 CSV 文件。我认为命令应该是这样的:

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

当我运行它时,它说它已成功完成,但我永远找不到该文件。我如何找到这个文件,或者我应该以不同的方式提取数据?

最佳答案

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

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

Data written to the filesystem is serialized as text with columns separated by ^A and rows separated by newlines. If any of the columns are not of primitive type, then those columns are serialized to JSON format.

稍作修改(添加 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

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

基于 this patch-3682 ,我怀疑在使用 Hive 0.11 时有更好的解决方案,但我无法自己测试。新语法应允许以下内容。

INSERT OVERWRITE LOCAL DIRECTORY '/home/lvermeer/temp' 
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
select books from table;

希望对您有所帮助。

关于database - 如何将 HiveQL 查询的结果输出到 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18129581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com