Javaでマッパーはどのように使用されていますか。
Javaにおいて、「Mapper」とは一般的に、入力データを一組のキーバリューペアに変換するために使われるコンポーネントを指す。具体的には、HadoopのMapReduceフレームワークにおいて、
Mapperとは、Mapフェーズを処理するためのクラスです。Mapperを使用するための一般的なステップを以下に示します。
org.apache.hadoop.mapreduce.Mapper インタフェースを実装したクラスを作成し、その map() メソッドをオーバーライドします。
mapメソッドの中で、入力データを処理して、キーバリューペアのセットを出力するロジックを書く。
map()メソッド内でcontext.write(key, value)を使って生成したキーバリューペアを出力します。
メインプログラムで MapReduce ジョブを構成して実行する。
Mapperの使用方法をJavaで示す簡単な例を次に示します:
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
public class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
String[] words = line.split(” “);
for (String word : words) {
this.word.set(word);
context.write(this.word, one);
}
}
}
このサンプルでは、「MyMapper」というMapperクラスを継承し、「map」メソッドを実装する「MyMapper」というクラスを作成しました。「map」メソッドでは、入力行を単語に分け、単語と1をキーと値のペアで出力します。この場合、キーは単語型のTextで、値はIntWritable型の1です。
もちろん、実際の利用方法は適用するシーンやフレームワークにも依存します。Hadoop MapReduce フレームワークを前提にした例をご案内いたしました。他のフレームワークやライブラリをご利用いただく場合には、それに応じたドキュメントやサンプルコードをご参照ください。