mapreduce中文乱码,已解决
问题:
mapreduce中文乱码
原因:
再用Hadoop处理数据的时候,发现输出的时候,总是会出现乱码,这是因为Hadoop在设计编码的时候,是写死的。默认是UTF-8,所以当你处理的文件编码格式不是为UTF-8的时候,比如为GBK格式,那么就会输出的时候就会出现乱码。
问题解决:
解决问题非常简单,就是转码,确定数据都是以UTF-8的编码格式在运行。
在map端从文件中读取一行数据的时候,把他转为UTF-8格式。例如:
我的文件是GBK格式的则:
// 把数据以GBK的格式读过来
String line = new String(value.getBytes(),0,value.getLength(),"GBK");
注意:我的value是Text类型的。
再次运行,查看结果。乱码问题解决。