配置Hive MR作业的分隔符

时间:2012-07-03 05:55:52

标签: hive

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

5 个答案:

答案 0 :(得分:1)

从hive-0.11.0开始,你可以写

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

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

答案 1 :(得分:0)

您可以尝试:

SELECT (rest of your query)
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY 'YourChar' (example: FIELDS TERMINATED BY '\t')

答案 2 :(得分:0)

您也可以使用: -

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果源表dnt未在create schema语句中指定分隔符,则您将无法更改它。您将始终包含默认值。是的,分隔符将由源表的create schema控制。所以这也不是可配置的。 我有一个类似的问题,并在完成hive MR工作后最终修改001作为第二步。