Hadoop-Hadoop中文解析乱码

Hadoop-Hadoop中文解析乱码

归属感 发布于 2017-02-07 字数 60 浏览 1207 回复 2

Hadoop解析带有中文链接,gbk格式输出地址,结果为乱码?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-05-16 2 楼

Hadoop中涉及编码时都是写死的UTF-8,如果文件编码格式是其它类型(如GBK),则会出现乱码。此时只需在mapper或reducer程序中读取Text时,使用transformTextToUTF8(text, "GBK");进行一下转码,以确保都是以UTF-8的编码方式在运行。

public static Text transformTextToUTF8(Text text, String encoding) {
String value = null;
try {
value = new String(text.getBytes(), 0, text.getLength(), encoding);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return new Text(value);
}

输出文件为GBK,则重写TextOutputFormat类,public class GBKFileOutputFormat<K, V> extends FileOutputFormat<K, V>,把TextOutputFormat的源码拷过来,然后把里面写死的utf-8编码改成GBK编码。最后,在run程序中,设置job.setOutputFormatClass(GBKFileOutputFormat.class);

想挽留 2017-02-22 1 楼

无非就是编码不统一,一般情况下,这样就能转码了

String str="你好";
System.out.println(str);
System.out.println(new String(str.getBytes(),"utf-8"));