为Hadoop作业指定UTF-8编码

时间:2012-10-11 02:01:10

标签: java encoding utf-8 internationalization hadoop

在我编写的Hadoop作业中,我想为我的映射器/缩减器使用UTF-8编码的字符串。如何指定UTF-8作为我的系统编码?如果我在本地运行代码,我可以java -Dfile.encoding="UTF-8",但是当我尝试运行hadoop jap myjar.jar -Dfile.encoding="UTF-8"时,这不起作用。

2 个答案:

答案 0 :(得分:4)

我们发现问题在于映射器java进程没有 -Dfile.encoding = UTF-8 。我们不得不将其添加到“mapreduce.map.java.opts”。 “mapreduce.reduce.java.opts”也是如此。

您可以在XML配置文件中以及Java中执行此操作:

config.set(“mapreduce.map.java.opts”,“ - Xmx1843M -Dfile.encoding = UTF-8”);

有关配置详情,请参阅http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html

答案 1 :(得分:2)

默认情况下,Hadoop使用UTF-8编码,因此您无需提供此类选项 我假设您使用Text作为键/值。根据{{​​3}}:“此类使用标准UTF8编码存储文本”