Hadoop 0.21.0 を使用しています。2 つの異なるファイルに出力したいので、MultipleOutputs を機能させようとしています。これが私の Reduce です:
public static class Reduce extends MapReduceBase implements Reducer < Text, Text > {
private MultipleOutputs mos;
public void configure(JobConf conf) {
mos = new MultipleOutputs(conf);
}
public void reduce(Text key, Iterator < Text > values, OutputCollector < Text, Text > output, Reporter reporter) throws IOException {
mos.getCollector("A", reporter).collect(key, new Text("Hello"));
mos.getCollector("B", reporter).collect(key, new Text("Bye"));
mos.getCollector("C", reporter).collect(key, new Text("Chau"));
}
public void close() throws IOException {
mos.close();
}
}
しかし、これをコンパイルしようとすると、次のエラーが発生します。
Main.java:41: error: cannot find symbol
private MultipleOutputs mos;
^
symbol: class MultipleOutputs
location: class Reduce
Main.java:45: error: cannot find symbol
mos = new MultipleOutputs(conf);
^
symbol: class MultipleOutputs
location: class Reduce
私はこれを追加しましたが:import org.apache.hadoop.mapred.*
; コードの先頭に。
これらのエラーが発生する理由を教えてください。どうすればこの問題を解決できますか?