Hive 以逗号分隔格式输出到文本文件

Hive output to a text file in a comma separated format

我正在执行以下操作

hive -e 'select product_id from table;' > out.txt

这是给我一个文本文件,每行都有每个产品 ID。我希望它们在一行上,每个 ID 之间用逗号隔开。我什至尝试使用 shell 脚本来获得所需的格式。

paste -s -d ',' < out.txt

使用此命令,我在终端上以正确的格式获取结果。但是文件没有被修改。理想情况下,这不应该通过设置一些配置单元配置来实现吗?

我看了 this SO 问题。但它对我不起作用。

尝试

sed -i 'N;s/\n/,/' filename

根据问题标题,您的问题标题具有误导性,

对于 Hive 版本 0.11.0 及更高版本,

  INSERT OVERWRITE [LOCAL] DIRECTORY 'dirname' 
    ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY ',' 
    <your query>;

参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Writingdataintothefilesystemfromqueries

是另一种从配置单元查询结果创建 csv 的解决方案。

答案就在某处,但我给你的是我在 csv 的配置单元输出中定期使用的答案。这就像魅力一样,您还可以将复杂的查询放入文件并使用以下代码:

hive -e 'select * from table' | sed 's/[\t]/~/g' > output.csv
hive -f /tmp/myhql.hql | sed 's/[\t]/~/g' > output.csv