Могу ли я получить номер раздела Hadoop?

Я hadoop новичок.

Я хочу получить номер раздела в выходном файле.

Сначала я сделал кастомный разделитель.


public static class MyPartitioner extends Partitioner<Text, LongWritable> {

    public int getPartition(Text key, LongWritable value, int numReduceTasks) {

    int numOfChars = key.toString().length();
        return numOfChars % numReduceTasks;
    }
}

Оно работает. Но я хочу «визуально» выводить номера разделов на Reducer.

Как я могу получить номер раздела ??

Ниже приведен мой исходный код редуктора.


public static class MyReducer extends Reducer<Text, LongWritable, Text, Text>{

    private Text textList = new Text();

    public void reduce(Text key, Iterable<LongWritable> values, Context context)
      throws IOException, InterruptedException {

        String list = new String();

            for(LongWritable value: values) {
                list = new String(list + "\t" + value.toString());
            }

            textList.set(list);

            context.write(key, textList);

    }

}

Я хочу поместить номер раздела в «список» соответственно. Там будет «0» или «1».

list = new String(list + "\t" + value.toString() + "\t" + ??);

Было бы здорово, если бы мне кто-нибудь помог.

+

Благодаря ответу я нашел решение. Но это не сработало, и я думаю, что сделал что-то не так.

Ниже представлен модифицированный файл MyPartitioner.


открытый статический класс MyPartitioner расширяет Partitioner {

    public int getPartition(Text key, LongWritable value, int numReduceTasks) {

        int numOfChars = key.toString().length();
        return numOfChars % numReduceTasks;

        private int bring_num = 0;      
        public void configure(JobConf job) {
            bring_num = jobConf.getInt(numOfChars & numReduceTasks);
}

    }

}

person user3527158    schedule 26.04.2014    source источник


Ответы (1)


Добавьте приведенный ниже код в класс Reducer, чтобы получить номер раздела в переменной класса, которую впоследствии можно использовать в методе Reducer.

String partition;
protected void setup(Context context) throws IOException,
    InterruptedException {
    Configuration conf = context.getConfiguration();
    partition = conf.get("mapred.task.partition");
}
person Praveen Sripati    schedule 27.04.2014