关于输入输出编码
hadoop源代码中涉及编码问题时都是写死的utf-8,但是不少情况下,也会遇到输入文件和输出文件需要GBK编码的情况。
输入文件为GBK,则只需在mapper或reducer程序中读取Text时,使用new String(text.getBytes(), 0, text.getLength(), encoding)进行一下转码即可正常读出。
输出文件为GBK,则重写TextOutputFormat类,如public class GBKFileOutputFormat<K, V> extends FileOutputFormat<K,V>,
把TextOutputFormat的源码拷过来,然后把里面写死的utf-8编码改成GBK编码。最后,在run程序中,设置job.setOutputFormatClass(GBKFileOutputFormat.class);