如何在Custom Partitioner Hadoop

时间:2017-03-31 13:54:42

标签: hadoop mapreduce hadoop2

我已根据我的逻辑实现了自定义分区。我也能正确获取文件。但是由于条件,某些reducer的数据非常庞大,导致减速器阶段延迟。

所以有任何方法可以在一个reducer输出文件中创建许多小文件。

这是我的自定义分区

public class MyPartioner extends Partitioner<Text, IntWritable> {
  public int getPartition(Text key, IntWritable value, int setNumRedTask) {
   String str = key.toString();
   if (str.contains("Japan|2014")) {
    return 0;
   } else if (str.contains("Japan|2013")) {
    return 1;
   }  else if (str.contains("Japan|2012")) {
    return 2;
   } else if (str.contains("Japan|2011")) {
    return 3;
   } else
    return 4;
  }

第一个条件有非常大量的数据,如20 GB,但最后一个将有12 mb。

1 个答案:

答案 0 :(得分:0)

您的输入集有很多记录有“日本| 2014”。

最简单的方法是添加“Japan | {month} | 2014”或使用多输出来实现相同目的。