2016-05-18 2 views
-2

JavaコードをHadoop MapReduceに変換しようとしています。 私はMapReduceプログラミングの初心者ですので、お手伝いしてください。Javaコードをmapreduceに変換するには?

私はファイル内のすべての異なる値を数え上げ、別のファイルに出力しようとしています。

入力: アレックス アレックス ジョン スチュアート マイケル ジョン マイケル アレックス

出力: アレックス3

ジョン2

スチュアート1

マイケル・2

は、ここに私のコードです:

public class test { 

    public static void main(String[] args) throws Exception { 
     String[] arr = { "sa", "pa" , "ga", "sa", "pa", "la" }; 
     String[] result = new String[10]; 
     int counter = 0, count = 0; 
     for (int i = 0; i < arr.length; i++) { 
      boolean isDistinct = false; 
      for (int j = 0; j < i; j++) { 
       if (arr[i] == arr[j]) { 
        isDistinct = true; 
        break; 
       } 
      } 
      if (!isDistinct) { 
       result[counter++] = arr[i]; 
      } 
     } 
     for (int i = 0; i < counter; i++) { 
      count = 0; 
      for (int j = 0; j < arr.length; j++) { 
       if (result[i] == arr[j]) { 
        count++; 
       } 

      } 
      System.out.println(result[i] + " = " + count); 

     } 
    } 
} 

私は配列として入力を与えている。このコードでは、実際の状況で私がHDFS内のファイルからそれを取得する必要があります。

ファイルの出力は、HDFSで新しいファイルを作成する必要があります。

+0

あなたはいくつかの調査によって回答を見つけたはずです – ZeusNet

答えて

2

あなたの問題は、ほとんどの開発者が始める標準のWordCount MapReduceの例に相当します。

Example: WordCount v1.0

WORDCOUNTは地図を持つ単一のMapReduceジョブであると段階を減らします。

Mapperは入力ファイルから各行を1つずつ読み込みます。数値(あなたの場合は名前)と1のカウントであるキーを発します。

キーを基にしてグループを減らして値を加算し、最後にキーと総数を出します。キーが見られた回数。

この例には、(基本的に)マッパーの出力で実行される結合ステージが含まれています。この例では、ロジックが同じで、同じタイプのキー/値オブジェクトを受信して​​発行するため、Reduceを再利用することができます。コンバイナはReduce段階に送られるデータの量を減らします。

関連する問題