2

株式トランザクション ログ ファイルを使用しています。各行は、20 個のタブで区切られた値を持つ取引トランザクションを示します。Hadoop を使用してこのファイルを処理し、取引のベンチマークを行っています。現在、行ごとに個別のベンチマーク計算を実行する必要があるため、map-reduce に reduce 関数は必要ありません。各行のベンチマーク計算を実行するには、Sybase データベースにクエリを実行して、その行に対応する標準値を取得する必要があります。データベースは、各行の 2 つの値 [取引 ID と株式 ID] に基づいてインデックス化されます。私の質問は、mapreduce プログラムで tradeId と StockId をキーとして使用する必要があるか、キーに他の値/[値の組み合わせ] を選択する必要があるかです。

4

1 に答える 1

0

したがって、入力の各行に対してデータベースにクエリを実行し、各行のベンチマーク計算を個別に実行します。ベンチマークの計算が終了したら、各行にベンチマーク値を出力します。

この場合、レデューサーをまったく使用しないか、ID レデューサーを使用することができます。

したがって、map 関数は 1 行で読み取り、標準値を求めて Sybase データベースにクエリを発行し、ベンチマーク計算を実行します。各行をベンチマーク値とともに出力したいので、Map 関数で行をキーとして出力し、ベンチマーク値を値として出力することができます。つまり、<line, benchmark value>

マップ関数は次のようになります: (ベンチマーク値は整数であると想定しています)

public void map(Text key, IntWritable value, Context context) throws Exception {
    String line = value.toString();   //this will be your key in the final output

     /* 
         Perform operations on the line

      */

      /* 

         standard values = <return value from sybase query.>;

      */

      /*Perform benchmark calculations and obtain benchmark values */

      context.write(line,benchmarkValue);     




}
于 2013-07-11T21:24:15.483 に答える