2016-02-18 5 views
0

У меня есть файл размером 50 МБ (полный текст без пробелов). Я хочу разбить эти данные таким образом, чтобы каждый картограф получал 5 МБ данных. Mapper должен получать данные в формате (K, V), где ключ - номер раздела (например, 1,2, ..), а значение - обычный текст (5 МБ).Создание пользовательского значения ключа для mappers в hadoop из файла

Я прочитал InputFormat (method getSplits), FileInputFormat (FileSplit method) и RecordReader, но не мог понять, как создавать и использовать расщепляется создать необходимый пользовательский (K, V) для моих картографов. Я новичок в программировании Hadoop MapReduce, поэтому, пожалуйста, предложите мне, как действовать в этом случае.

+0

Что вы подразумеваете под полными текстовыми данными без пробела? Не могли бы вы привести небольшой пример? Вам нужна логика для создания пар для картографов. Например, логика в примере wordcount состоит в том, чтобы разбить текстовые данные на пробелы. –

+0

Мои данные - это большой файл, содержащий символ sequece, такой как sdaccraggrralwghdsgfndsnvfcvnd ..... в MB's. поэтому я хочу разбить эти данные, чтобы применить мою обработку на каждой стороне карты. и я хочу определить, какой из разделов указан в файле mapper – Sumit

+0

Итак, вы хотите разбить эту строку, на что? Какая логика? Возможно, вы можете использовать SubString, но какова ваша заинтересованность? –

ответ

0

Вы можете установить mapreduce.input.fileinputformat.split.maxsize в своей конфигурации в байтах, чтобы сообщить картографу, что вы должны получить 5 МБ данных.

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