为hadoop作业指定utf-8编码

9ceoxa92  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(714)

在我正在编写的hadoop作业中,我希望Map器/还原器使用utf-8编码的字符串。如何指定utf-8作为系统编码?如果我在本地运行代码,我可以 java -Dfile.encoding="UTF-8" ,但当我试着跑步时 hadoop jap myjar.jar -Dfile.encoding="UTF-8" ,这没用。

de90aj5v

de90aj5v1#

我们发现问题在于mapperJava进程没有-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 有关配置详细信息。

lo8azlld

lo8azlld2#

默认情况下,hadoop使用 UTF-8 所以你不必提供这样的选项。
我想你用 Text 为您的键/值。根据javadoc:“这个类使用标准utf8编码存储文本”

相关问题