Я 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);
}
}
}