4

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

4

2 回答 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 回答