У меня есть файл, который содержит сжатые данные, разделенные композитного разделитель (~~ # & # & # ~~) Я пытаюсь создать картограф для чтения записей в файл и обработать их.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);
}
}
}
Ваши заявления S.O.P не будут отображаться на консоли при добавлении в MR-коде. Они будут добавлены в журналы журналов работы MR. –