#java #mapreduce
#java #mapreduce
Вопрос:
Я получаю ошибку при обработке
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
Как с этим справиться? Может кто-нибудь, пожалуйста, помогите мне …!
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.TextOutputFormat;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat;
Выше приведены импортированные файлы. И ошибка возникает в приведенных ниже строках кода.
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
Как исправить эту проблему? Я новичок в MapReduce.
Комментарии:
1. MapReduce v2 совместим с MapReduce v1, но упаковка классов отличается между V2 и V1. Введите
hadoop version
и сообщите здесь, что вы получите.
Ответ №1:
Вы используете несколько пакетов из обновленной версии Hadoop [mapreduce], но некоторые из них (TextInputFormat и TextOutputFormat) являются более старой версией [mapred package].
Всегда полезно использовать пакеты из map reduce, поэтому вам нужно сделать следующее упоминание об изменении.
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
Обратитесь к этому: https://github.com/ragnar-lothbrok/hadoop-demo
Я добавил несколько рабочих примеров.
Ответ №2:
Классы TextInputFormat и TextOutputFormat относятся к другой версии hadoop по сравнению с другими классами.Исправьте импорт для TextInputFormat и TextOutputFormat.