Я работаю с Hadoop 0.20, и я хочу, чтобы два выходных файла сокращения вместо одного выхода. Я знаю, что MultipleOutputFormat
не работает в Hadoop 0.20. Я добавил файл базы данных hadoop1.1.1-core в пути сборки моего проекта в Eclipse. Но он все еще показывает последнюю ошибку.Как использовать MultipleoutputFormai в Hadoop 0.20?
Вот мой код:
public static class ReduceStage extends Reducer<IntWritable, BitSetWritable, IntWritable, Text>
{
private MultipleOutputs mos;
public ReduceStage() {
System.out.println("ReduceStage");
}
public void setup(Context context) {
mos = new MultipleOutputs(context);
}
public void reduce(final IntWritable key, final Iterable<BitSetWritable> values, Context output) throws IOException, InterruptedException
{
mos.write("text1", key, new Text("Hello"));
}
public void cleanup(Context context) throws IOException {
try {
mos.close();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
А в перспективе():
FileOutputFormat.setOutputPath(job, ConnectedComponents_Nodes);
job.setOutputKeyClass(MultipleTextOutputFormat.class);
MultipleOutputs.addNamedOutput(job, "text1", TextOutputFormat.class,
IntWritable.class, Text.class);
Ошибка:
java.lang.NoSuchMethodError: org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.setOutputName(Lorg/apache/hadoop/mapreduce/JobContext;Ljava/lang/String;)V
at org.apache.hadoop.mapreduce.lib.output.MultipleOutputs.getRecordWriter(MultipleOutputs.java:409)
at org.apache.hadoop.mapreduce.lib.output.MultipleOutputs.write(MultipleOutputs.java:370)
at org.apache.hadoop.mapreduce.lib.output.MultipleOutputs.write(MultipleOutputs.java:348)
at bitsetmr$ReduceStage.reduce(bitsetmr.java:179)
at bitsetmr$ReduceStage.reduce(bitsetmr.java:1)
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.LocalJobRunner$Job.run(LocalJobRunner.java:216)
Что я могу сделать, чтобы иметь MultipleOutputFormat
? Правильно ли я использовал код?
Здание с 1.1.1, но работает в 0.20 не работает. На самом деле сначала загружается 0,20, а 1.1.1 не может переопределить 0,20. – zsxwing
@zsxwing: Итак, как я могу использовать multipleoutputformat в hadoop 0.20? –
Вам необходимо скопировать эти коды в свой проект или обновить хаоп. – zsxwing