2013-11-13 3 views
0

У меня есть файл, который содержит сжатые данные, разделенные композитного разделитель (~~ # & # & # ~~) Я пытаюсь создать картограф для чтения записей в файл и обработать их.Hadoop: Разделение контента класса Text Box на основе композитного разделителя

Я написал класс Mapper, такую ​​как

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

Может ли кто-нибудь помочь.

Я пытался использовать методы преобразования текста и текста, а также текст и BytesWritable ... но ничего не работает.

import java.io.IOException; 
import java.io.ByteArrayInputStream; 
import java.io.InputStream; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.io.BytesWritable; 
import org.apache.hadoop.mapred.MapReduceBase; 
import org.apache.hadoop.mapred.Mapper; 
import org.apache.hadoop.mapred.OutputCollector; 
import org.apache.hadoop.mapred.Reporter; 
public class DeSerializeMapper extends MapReduceBase 
implements Mapper 
{ 
    public void map(LongWritable key, Text value, OutputCollector output, Reporter reporter) throws IOException 
    { 
     String allRec = value.toString(); 
     for (String recStr : allRec.split("~~#&#&#~~")) 
     { 
      try 
      { 
       System.out.println("DEBUG ::::::::::::::::::::::::::Before calling SubstringIn : " + recStr.substring(0,20)); 
       output.collect(new Text(recStr), new Text(getOutputString(recStr))); 
      }catch(Exception e){ 
       e.printStackTrace(); 
       throw new IOException("Failed in map", e); 
      } 
     } 
    } 

    public static String getOutputString(String recStr) throws Exception 
    { 
     try { 
        dosomething(); 
        return (lineBuffer); 
     } catch(Exception e){ 
      e.printStackTrace(); 
      throw new Exception("Failed in readFile", e); 
     } 
    } 
} 
+0

Ваши заявления S.O.P не будут отображаться на консоли при добавлении в MR-коде. Они будут добавлены в журналы журналов работы MR. –

ответ

0

Помните, что ваши System.out.println() заявления обыкновение появляться на консоли при добавлении в MR кода. Они будут добавлены в журналы журналов работы MR.

Чтобы просмотреть заявления System.out.println(), перейдите на страницу JobTracker (в основном, на порту 50030), перейдите к заданию конкретного задания, которое вы выполнили, а затем просмотрите журналы задач карты. Вы найдете операторы System.out.println() под заголовком stdout logs (при наличии).

+0

Ankur, что приятно знать. Но мой вопрос - почему раскол не работает. Или что-то там, что я пропустил. – user2986469

+0

Что значит «Сплит не работает». Не могли бы вы рассказать? –

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