指定Hadoop作业的UTF-8编码

4
在我编写的Hadoop作业中,我希望为我的Mapper / Reducer使用UTF-8编码的字符串。如何指定UTF-8作为我的系统编码?如果我在本地运行代码,我只需执行java -Dfile.encoding="UTF-8"即可,但是当我尝试运行hadoop jap myjar.jar -Dfile.encoding="UTF-8"时,这并不起作用。
2个回答

4
我们发现问题在于mapper 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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接