2013-04-22 2 views
0

Я написал небольшую программу карт для чтения файлов журнала и поиска слова «extract». Только если слово найдено, оно должно написать строку для объекта контекста. Но почему-то я вижу все строки в выходном файле. Вот мой кодАнализ файла журнала в hadoop с помощью java-программы

 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()); 
      if(word.find("extract") >= -1) { 
       context.write(word, null); 
      } 
     } 
    } 

Не могли бы вы сообщить мне, что я делаю неправильно? Thanks, aarthi

+0

Если вы хотите написать строку в контексте; почему вы пытаетесь добавить слово? –

ответ

1

Если вы хотите написать строку в контексте; вот код кода

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { 

    String line = value.toString(); 

    if (line.contains("extract")) { 
     context.write(value,null); 
    } 

} 
+0

HI, Спасибо за ввод. Я получаю исключение нулевого указателя, когда я передаю значение null в метод записи контекста. Когда я заменил второй параметр null на что-то вроде 1, программа работает. Однако он добавляет второй параметр к выводу в каждой строке. Есть ли способ обойти это? – user1384205

+0

Могу ли я знать, чего бы вы хотели достичь? –

+0

существует несколько файлов журналов, каждый из которых работает до нескольких ГБ. Im ищет определенные строки в файлах журнала, которые соответствуют моим критериям. В качестве примера, im ищет строку, в которой есть слово «extract». – user1384205

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