2012-10-11 33 views
4

在我正在編寫的Hadoop作業中,我想爲我的映射器/縮減器使用UTF-8編碼的字符串。我如何將UTF-8指定爲我的系統編碼?如果我在本地運行代碼,則可以執行java -Dfile.encoding="UTF-8",但是當我嘗試運行hadoop jap myjar.jar -Dfile.encoding="UTF-8"時,這不起作用。指定Hadoop作業的UTF-8編碼

回答

2

默認情況下,Hadoop使用UTF-8編碼,因此您不必提供此類選項。
我假設您使用Text作爲您的鍵/值。按照javadoc

3

「這一類存儲使用標準的UTF8編碼的文字:」我們發現,問題是,映射Java進程沒有-Dfile.encoding = UTF8。我們必須將其添加到「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