Я написал простую задачу карты для hadoop 0.20.2, входной набор данных состоит из 44 файлов, каждый составляет около 3-5 МБ. Каждая строка любого файла имеет формат int,int
. Формат ввода - это значение по умолчанию TextInputFormat
, а работа картографа - синтаксический анализ ввода Text
в целые числа.hadoop textinputformat читать только одну строку в файле
После запуска задачи статистика фреймворка hadoop показывает, что количество входных записей для задачи карты составляет всего 44. Я попытался отладить и обнаружил, что входные записи для метода map
- это только первая строка каждого файла.
Кто-нибудь знает, в чем проблема, и где я могу найти решение?
Благодарим вас за продвижение.
Редактировать 1
Входные данные были получены с помощью другой карты-уменьшения задачи, выход которого формат TextOutputFormat<NullWritable, IntXInt>
. Метод toString()
IntXInt
должен содержать строку int,int
.
Edit 2
Мой картографа выглядит следующим образом
static class MyMapper extends MapReduceBas
implements Mapper<LongWritable, Text, IntWritable, IntWritable> {
public void map(LongWritable key,
Text value,
OutputCollector<IntWritable, IntWritable> output,
Reporter reporter) {
String[] s = value.toString().split(",");
IntXInt x = new IntXInt(s[0], s[1]);
output.collect(x.firstInt(), x.secondInt());
}
}
Edit 3
Я только проверил, картограф на самом деле читает только 1 строку для каждого файла, НЕ весь файл как один Text
значение.
Вы должны взглянуть на ваш вывод? – smttsp
@ greedybuddha: да. – user1906342
@smttsp: выход - 44 записи. – user1906342