2013-02-03 3 views
0

hadoop의 새로운 기능 - HDFS 파일을 청크로 읽으려고합니다. 예를 들어, 한 번에 100 줄을 긋고 매퍼에서 apache OLSMultipleLinearRegression을 사용하여 데이터를 회귀 분석합니다. 내가 여러 줄에 읽어 여기에 표시된이 코드를 사용하고 있습니다 :여러 라인을 읽는 hadoop mapper

public void map(LongWritable key, Text value,Context context) throws java.io.IOException ,InterruptedException 
{ 
    String lines = value.toString(); 
    String []lineArr = lines.split("\n"); 
    int lcount = lineArr.length; 
    System.out.println(lcount); // prints out "1" 
    context.write(new Text(new Integer(lcount).toString()),new IntWritable(1)); 
} 

내 질문은 : http://bigdatacircus.com/2012/08/01/wordcount-with-custom-record-reader-of-textinputformat/

내 매퍼는 다음과 같이 정의에서 System.out.println에서 lcount == 1 와서 어떻게? 내 파일은 "\ n"으로 구분되며 레코드 판독기에 NLINESTOPROCESS = 3을 설정했습니다. 내 입력 파일 포맷과 같이 내가 한 번에 한 라인을 읽고있다 경우 회귀 API는 여러 개의 데이터 포인트에 걸립니다

y x1 x2 x3 x4 x5 
y x1 x2 x3 x4 x5 
y x1 x2 x3 x4 x5 
... 

내가, 내 다중 회귀 분석을 수행 할 수 없습니다 ... 어떤 도움

주셔서 감사합니다
+0

하둡에서 매퍼에 나오는 데이터 라인으로 라인이다. –

답변

0

String.split()은 정규 표현식을 인수로 취합니다. 탈출을 두 번해야합니다. 당신은 당신이 WholeFileInputFormat를 사용해야 전체 데이터가 필요 class.If 당신이 당신의 입력으로 TextInputFormat를 사용하는 경우

String []lineArr = lines.split("\\n"); 
+0

흠, lcount는 여전히 == 1입니다. 문제는 내 value.toString()이 3 줄 대신 1 줄의 입력 만 포함한다는 것입니다. 도와 주시겠습니까? –

+0

그럼 내가 지적한 바를 제외하고 다른 사람이 게시 한 코드에는 또 다른 버그가 있습니다 :)'value '가'map()'에 무엇인지보고 싶습니다. 거기서부터 –

+0

내 맵 내 값()는 "y x1 x2 x3 x4 x5"의 한 줄을 포함합니다 .. 저는 hadoop에 매우 익숙하며, 어떤 기능을 내가 recordReader에서보고 시작해야하는지 지적 해 주실 수 있습니까? 고마워요. http://bigdatacircus.com/2012/08/01/wordcount-with-custom-record-reader-of-textinputformat/ –

관련 문제