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