2017-01-04 9 views
0

マップメソッド(Hadoop)で入力テキストを分割する方法を知りたい。マップ(Hadoop)の入力テキストを分割する方法は?

私の入力ファイルは次のようである:

aaaa 
 
aaaa 
 
aaaa 
 
aaaa 
 
aaaa

私はこのコードを実行すると:

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{ 
     String[] lines = value.toString().split("\\n"); 
      paire.set("hi"); 
      one.set(lines.length); 
      context.write(paire,one); 
    } 
} 

出力は次のとおりです。

hi \t 1 
 
hi \t 1 
 
hi \t 1 
 
hi \t 1 
 
hi \t 1

私はlines.lengthは1としませ5.

答えて

0

に等しく、なぜあなたは常に提供されたデータのための1つになりますどの\nにより、アレイスプリット・アンの長さを書いているのか分かりません。マップの入力は...常にテキストデータのための新しいラインです

あなたのコードをリファクタリング:

public void map(Object key, Text value, Context context) throws IOException, InterruptedException{ 
      //System.out.println("hi " + value.getLength()); 
      context.write(new Text("hi"), new Text(String.valueOf(value.getLength()))); 
    } 
+0

はあなたの助けをありがとう! :) – user7375007

関連する問題