2016年1月21日

mapreduce中获取输入文件的路径

摘要: InputSplit inputSplit = context.getInputSplit();String fileName = ((FileSplit) inputSplit).getPath().getName(); 阅读全文

posted @ 2016-01-21 15:37 BruceLv 阅读(1657) 评论(0) 推荐(0) 编辑

mapreduce数据不平衡时的处理方法

摘要: 用mr处理大数据经常遇到数据不平衡的情况,这里的数据不平衡指的是,数据中有少部分key集中了大量的数据,导致其它的reduce都运行完了,只剩几个reduce在跑。这种情况一般有如下三种解决方法(原理都差不多)。1、重写partitioner 如果一个key对应的数据过过,那么可以在partiti... 阅读全文

posted @ 2016-01-21 14:59 BruceLv 阅读(422) 评论(0) 推荐(0) 编辑

Partitioner

摘要: partitioner 是map中的数据映射到不同的reduce时的根据。一般情况下,partitioner会根据数据的key来把数据平均分配给不同的reduce,同时保证相同的key分发到同一个reduce。但当一个数据不平衡时,即某个key对应的数据量太大,导致reduce的空间不够,或者计... 阅读全文

posted @ 2016-01-21 14:11 BruceLv 阅读(345) 评论(0) 推荐(0) 编辑

Combiner

摘要: 如果job 设置了 combiner ,则job的每个map运行的数据会先进入combiner,然后再通过patitioner分发到reduce。通过combiner能减少reduce的计算、空间压力。其实combiner就是继承了Reducer类了一个子类,运行在map排序后的输出上。可以理解... 阅读全文

posted @ 2016-01-21 14:05 BruceLv 阅读(242) 评论(0) 推荐(0) 编辑

导航