Hadoop 0.20.203.0을 사용하고 있습니다. 두 개의 다른 파일로 출력하고 싶습니다. 그래서 MultipleOutputs가 작동하도록하려고합니다.Hadoop MultipleOutputs.addNamedOutput throws "심볼을 찾을 수 없습니다"
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: indycascade <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "indy cascade");
job.setJarByClass(IndyCascade.class);
job.setMapperClass(ICMapper.class);
job.setCombinerClass(ICReducer.class);
job.setReducerClass(ICReducer.class);
TextInputFormat.addInputPath(job, new Path(otherArgs[0]));
TextOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
MultipleOutputs.addNamedOutput(conf, "sql", TextOutputFormat.class, LongWritable.class, Text.class);
job.waitForCompletion(true);
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
그러나,이 컴파일되지 않습니다 :
여기 내 구성 방법입니다. 문제가되는 행은 MultipleOutputs.addNamedOutput(...)
이며 "기호를 찾을 수 없습니다."라는 오류가 발생합니다.
isaac/me/saac/i/IndyCascade.java:94: cannot find symbol
symbol : method addNamedOutput(org.apache.hadoop.conf.Configuration,java.lang.String,java.lang.Class<org.apa che.hadoop.mapreduce.lib.output.TextOutputFormat>,java.lang.Class<org.apache.hadoop.io.LongWritable>,java.lang.Class<org.apache.hadoop.io.Text>)
location: class org.apache.hadoop.mapred.lib.MultipleOutputs
MultipleOutputs.addNamedOutput(conf, "sql", TextOutputFormat.class, LongWritable.class, Text.class);
물론, API 대신에 JobConf를 사용해 보았지만 동일한 오류가 발생합니다. 또한 JobConf는 더 이상 사용되지 않습니다.
어떻게하면 Multiple Outputs가 작동합니까? 그것도 올바른 클래스를 사용할 수 있습니까?