2015-03-04 2 views
0

Я новичок в hadoop. Просто закончил читать пример подсчета слов и получил некоторые идеи о том, что делают мапперы и редукторы. Однако то, что я узнал из слов, например, кажется, не относится к моей задаче, вот моя задача:Вычислительная медиана 1-токовой линии с использованием hadoop

Учитывая документ из нескольких строк, например,

привет

привет мир

как вы

Вывести среднее число, сколько слов в каждой строке есть на каждые 1 до линий тока, например,

1,5

Поскольку они медиана {1}, медиана {1,2}, медиана {1,2,3}.

Как я могу это сделать? Заранее спасибо!

+0

Это нелегко распараллеливать, потому что каждый результат линии зависит от всех строк перед ним. Технически вы можете сделать это с помощью MR, но только с использованием одного картографа и без редукторов, хотя это ничего не доказывает. –

ответ

0

Вы можете держать смещение байта в качестве ключа, так что редуктор не получит его в порядке использование одного редуктора В кэше редуктора предыдущие срединной и не линии обрабатываются до сих пор Вычислить медиану не умножая предыдущий не строки по предыдущей медианной и текущей строке нет слов

+0

Как получить доступ к смещению байта? т. е. если мой картограф теперь смотрит на 1000-ю строку, как я могу распечатать это число 1000? – user2818068

+0

Привет, текст textinputformat по умолчанию предоставляет (ключ, значение) как (byteoffset, line), поэтому ключ, который вы получаете в mapper, является смещением байта. –

Смежные вопросы