0

hadoopの新機能-HDFSファイルをチャンクで読み込もうとしています。たとえば、一度に100行ずつ、マッパーでapacheOLSMultipleLinearRegressionを使用してデータで回帰を実行しています。私はここに示されているこのコードを使用して複数の行を読んでいます:http://bigdatacircus.com/2012/08/01/wordcount-with-custom-record-reader-of-textinputformat/

私のマッパーは次のように定義されています。

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));
}

私の質問は、system.out.printlnからlcount == 1になるのはなぜですか?ファイルは「\n」で区切られ、レコードリーダーでNLINESTOPROCESS=3に設定しました。私の入力ファイルは次のようにフォーマットされています:

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

回帰APIは複数のデータポイントを取り込むため、一度に1行しか読み取っていない場合、重回帰を実行できません...助けてくれてありがとう

4

1 に答える 1

0

String.split()引数として正規表現を取ります。ダブルエスケープする必要があります。

String []lineArr = lines.split("\\n");
于 2013-02-03T04:15:53.283 に答える