最近在写MapReduce程序,实现Writable接口时发现总是读不进中文字,读出来全是乱码,找了一晚上发现问题,原来hadoop只支持UTF-8的字符集,因此,在存储Text变量时要先把string变量转换成UTF-8的字符集,再给Text赋值。问题解决。
hadoop只支持UTF-8字符集,所以需要将字符串String转化成utf-8再给Text赋值。另外你的上传到hdfs的文档也要是utf-8的否则即使使用此解决方法也会出错。
String str = new String("字符串".getBytes(),'UTF-8');
new Text().set(str)
本文介绍了一个在使用Hadoop MapReduce程序时遇到的关于中文字符乱码的问题及解决方案。问题在于Hadoop仅支持UTF-8字符集,因此在处理含有中文的Text变量时,需要先将字符串转换为UTF-8格式。
609

被折叠的 条评论
为什么被折叠?



