在我正在编写的 Hadoop 作业中,我希望我的映射器/减速器使用 UTF-8 编码的字符串。如何指定 UTF-8 作为我的系统编码?如果我在本地运行代码,我可以这样做java -Dfile.encoding="UTF-8"
,但是当我尝试运行时hadoop jap myjar.jar -Dfile.encoding="UTF-8"
,这不起作用。
问问题
8071 次
2 回答
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。
于 2015-05-07T18:43:30.420 回答
2
默认情况下,Hadoop 使用UTF-8
编码,因此您不必提供此类选项。
我假设您使用Text
您的键/值。根据javadoc:“此类使用标准 UTF8 编码存储文本”
于 2012-10-11T08:26:43.970 回答