[转帖]Hadoop涉及GBK编码的文件_Hadoop,ERP及大数据讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Hadoop,ERP及大数据讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3199 | 回复: 0   主题: [转帖]Hadoop涉及GBK编码的文件        下一篇 
huizai
注册用户
等级:少校
经验:933
发帖:83
精华:0
注册:2013-6-18
状态:离线
发送短消息息给huizai 加好友    发送短消息息给huizai 发消息
发表于: IP:您无权察看 2013-6-24 9:35:55 | [全部帖] [楼主帖] 楼主

Hadoop源代码中涉及编码问题时都是写死的utf-8,但是不少情况下,也会遇到输入文件和输出文件需要GBK编码的情况。

输入文件为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);




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论