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