Я пытаюсь выяснить, где выходные данные задачи «Карта» сохраняются на диске, прежде чем они могут быть использованы задачей «Уменьшить».
Примечание: - используется версия Hadoop 0.20.204 с новым API
Например, при перезаписи метода карты в классе Map:
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
context.write(word, one);
}
// code that starts a new Job.
}
Мне интересно узнать, где context.write () заканчивает записывать данные. До сих пор я столкнулся с:
FileOutputFormat.getWorkOutputPath(context);
Что дает мне следующее местоположение в hdfs:
hdfs://localhost:9000/tmp/outputs/1/_temporary/_attempt_201112221334_0001_m_000000_0
Когда я пытаюсь использовать его как вход для другой работы, это выдает мне следующую ошибку:
org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost:9000/tmp/outputs/1/_temporary/_attempt_201112221334_0001_m_000000_0
Примечание: задание запускается в Mapper, поэтому технически временная папка, в которую записывается задача Mapper, выводится, когда начинается новое задание. С другой стороны, он по-прежнему говорит, что входной путь не существует.
Есть идеи, куда записывается временный вывод? Или, может быть, в каком месте я могу найти выходные данные задачи «Карта» во время работы с этапами «Карта» и «Сокращение»?