摘要: 解决了一个Hadoop输出中文乱码的问题,简单来说就是注意编码,写出String的时候不要让Java插手。简单流程:Map:readFields(ResultSet result)——从Mysql中读出;Map:write(DataOutput out)——输出Map结果;Reduce:readFields(DataInput in)——读回Map输出的中间结果;从Log中看到Map从Mysql读出的字符串内容是正确的,但Reduce读回来就是乱码了。原来的代码如下: public void readFields(DataInput in) throws IOEx... 阅读全文
posted @ 2012-08-29 22:35 双子靓星 阅读(1153) 评论(1) 推荐(0) 编辑
摘要: 今天掉到getLocalCacheFiles的小坑里了。DistributedCache主要有getLocalCacheArchives和getLocalCacheFiles两个接口可以获取文件,我就理所当然的以为后者是拿非Archives文件了。结果处理时总是有不期望的字符出现,搞得我一度怀疑文本文件在HDFS中会被加上一些头,指明K/V类型以及分布之类的东西了。后来甚至抄了Hadoop源码中RecordReader的相关处理代码也仍然不行。最后才发现原来getLocalCacheFiles其实是把DistributedCache中的所有文件都拿回来了。于是加了文件名过滤,轻松搞定。主函数: 阅读全文
posted @ 2012-08-29 22:14 双子靓星 阅读(1145) 评论(0) 推荐(0) 编辑
摘要: 用NullWritable即可。 public static class XxxMapper extends Mapper<LongWritable, XxxRecord, LongWritable, NullWritable> { private LongWritable uid = new LongWritable(); public void map(LongWritable key, XxxRecord value, Co... 阅读全文
posted @ 2012-08-29 22:02 双子靓星 阅读(907) 评论(0) 推荐(0) 编辑