3

有没有办法为 Hive MR Jobs 配置分隔符?hive 内部使用的默认分隔符是“hive delimiter”(/001)。我的用例是配置分隔符,以便我可以根据要求使用任何分隔符。在hadoop中有一个属性“mapred.textoutputformatter.separator”,它将键值分隔符设置为此属性指定的值..有没有这样的方法来配置Hive中的分隔符?..我搜索了很多但没有没有任何有用的链接。请帮我。

4

5 回答 5

1

从 hive-0.11.0 开始,您可以编写

INSERT OVERWRITE LOCAL DIRECTORY '...'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
SELECT ...

有关完整语法,请参阅HIVE-3682

于 2013-06-20T17:07:15.607 回答
0

You can try that:

SELECT (rest of your query)
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY 'YourChar' (example: FIELDS TERMINATED BY '\t')
于 2012-07-03T06:10:32.900 回答
0

你也可以使用这个:-

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ('field.delim'='-','serialization.format'='-')

这将使用 -分隔符分隔列,但它特定于LazSimpleSerde

于 2013-07-30T09:56:43.863 回答
0

我猜您正在使用 INSERT OVERWRITE DIRECTORY 选项写入 hdfs 文件。如果您在 hdfs 文件的顶部创建一个没有分隔符的配置单元表,它将使用 '\001' 作为分隔符,因此您可以从配置单元表中读取文件而不会出现任何问题

于 2014-05-30T11:16:03.233 回答
0

如果源表 dnt 没有在创建模式语句中指定分隔符,那么您将无法更改它。您的操作将始终包含默认值。是的,分隔符将由为源表创建模式来控制。所以这也不是可配置的。我遇到了类似的问题,最终在完成 hive MR 工作后修改了 001 作为第二步。

于 2014-10-02T16:27:24.083 回答