2014-08-10 2 views
0

Как обрабатывать заголовок и трейлер в файле? После обработки этих строк его следует удалить из файла.Как обрабатывать заголовок и трейлер в MapReduce

Линия заголовка может быть найдена значением смещения 0 и тем же прицепом максимальное смещение. Но проблема в том, как мы можем получить обе эти строки в одном картографе?

Цените вашу помощь ..

С уважением, Мухаммед Нияз

ответ

0

Это возможно, когда у нас есть только один картографа для данного входного файла.

Мы можем обработать заголовок и трейлер запись в ниже три опции

  1. Написать собственный файл InputFormat и продлить FileInputFormat. В пользовательском методе InputFormat переопределить isSplitable() и вернуть «false», поэтому структура MR не будет разделять содержимое файла и передавать весь контент одному классу сопоставления.
  2. Сделайте размер блока hdfs больше, чем размер файла (но не рекомендуется). Таким образом, весь контент файла будет доступен для одного класса сопоставления.
  3. Содержимое всего файла будет доступно одному устройству отображения, если входной файл Gzipped (т.е. сжат).

Приветствуем любые комментарии или предложения.

0

В то время как класс TextInputFormat (и другие, но у меня нет полного списка) в задании MapReduce не может дать вам номер строки обрабатываемой записи, он МОЖЕТ дать вам смещение байта через Ключ. По-видимому, он используется для создания уникальных ключей. Следующий код удаляет первую запись ввода (aka, запись заголовка) ...

while (context.nextKeyValue()) { 
     if (context.getCurrentKey().get() != 0L) { 
      map(context.getCurrentKey(), context.getCurrentValue(), context); 
     } else { 
      System.out.println(" Skipping the header: " + context.getCurrentValue()); 
     } 
    } 
Смежные вопросы