ちょっとしたパフォーマンスチューニングでpublic class WordCountMapper ① extends Mapper<LongWritable, Text, Text, IntWritable> { ...}public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> { ... ②} 8
9.
型が一致しなくなるとpublic class WordCountMapper ① extends Mapper<LongWritable, Text, Text, IntWritable> { ...}public class WordCountReducer extends Reducer<Text, VIntWritable, Text, VIntWritable> { ... ②} 9
10.
コンパイルは通って タスクの処理中に実行時エラー11/02/20 03:07:21 INFO mapred.JobClient: Task Id :attempt_201102200304_0001_r_000000_2, Status : FAILEDjava.lang.ClassCastException: org.apache.hadoop.io.IntWritable cannot be cast toorg.apache.hadoop.io.VIntWritable at org.example.WordCountReducer.reduce(WordCountReducer.java:76) at org.example.WordCountReducer.reduce(WordCountReducer.java:67) at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:176) at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:566) at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:408) at org.apache.hadoop.mapred.Child.main(Child.java:170) 10
11.
MapReduce API は気が利かない•map, reduce のクラス定義に型情報が含まれてい るのに、別途わざわざ型を指定するのは冗長• 型が一致していなかったらコンパイル時にエラーが 出てほしい⇒ 簡潔かつ型安全にジョブを設定したい 11