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

时间:2015-01-10 21:18:52

标签: hive

我正在执行以下

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

这给了我一个文本文件,每行都有每个产品ID。我想让他们在每一个id之间用逗号在一行上。我甚至尝试使用shell脚本来获得所需的格式。

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

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

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

2 个答案:

答案 0 :(得分:2)

尝试

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

是从hive查询结果创建csv的另一种解决方案。

答案 1 :(得分:1)

答案就在那里,但我给你的答案是我定期使用hive输出到csv。这就像魅力一样,您也可以将复杂的查询放入文件中,并使用以下代码:

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