Hive查询输出分隔符

5

我在Hive中有两张表 - 第一张是外部表,第二张是管理表。 管理表是通过INSERT OVERWRITE...SELECT FROM external_table从外部表中填充的。 两个表都是使用','作为行分隔符创建的。当我运行查询并将结果写入文件时,结果文件中的分隔符是Tab,但我需要逗号。 如何将其更改为逗号? 我没有找到相应的属性。

1个回答

19
首先,你需要更改字段分隔符,而不是换行符,即。

hive >> CREATE TABLE some_table 
        (col1 int,
         col2 int,
         col3 string)
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY ','
        STORED AS TEXTFILE;

其次,如果你仍然遇到这个问题,你可以使用sed命令进行简单更改。
bash >> hive -e 'select * from some_Table' | sed 's/[\t]/,/g'  > outputfile.txt

请注意,[\t]表示按下Control+V,然后是Tab键:
sed 's/<Control+V><TAB character>/,/g'

谢谢Nicole。但我认为有一些配置可以将逗号设置为默认输出分隔符。这样的Hive行为很奇怪... - Valery Yesypenko
请简要说明一下这里发生了什么 - sed 's/[\t]/,/g' > outputfile.txthive -e 是用于从命令提示符中运行 Hive,对吗? - Raja Reddy
1
@RajaReddy hive -e 执行一个 Hive 查询。然后将查询输出传递给 sedsed 是一个文本操作程序。在这种情况下,语法 's/[\t]/,/g' 由四个由 / 分隔的部分组成。第一个 s 表示替换。[\t] 是制表符的匹配模式。, 是替换值,而 g 表示全局。 - ichbinallen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接