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