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