2014-04-20 3 views
0

я столкнулся определенная ошибкой при настройке своей работы для пользовательского InputFormatошибки при установке job.setInputFormatClass

Ниже моего код

package com.nline_delimiter; 

import java.io.IOException; 

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 



public class NL_driver { 

public static void main(String [] args) throws IOException, InterruptedException, ClassNotFoundException 
{ 
    Configuration conf=new Configuration(true); 

    Job job_run =new Job(conf); 

    job_run.setJobName("nline input format each line seperate wth delimiter"); 

    job_run.setJarByClass(NL_driver.class); 

    job_run.setMapperClass(NL_mapper.class); 
    job_run.setReducerClass(NL_reducer.class); 
    job_run.setInputFormatClass(NL_inputformatter.class);; 


    job_run.setMapOutputKeyClass(Text.class); 
    job_run.setMapOutputValueClass(IntWritable.class); 
    job_run.setOutputKeyClass(Text.class); 
    job_run.setOutputValueClass(IntWritable.class); 


    FileInputFormat.setInputPaths(job_run,new Path("/home/hduser/input_formatter_usage.txt")); 
    FileOutputFormat.setOutputPath(job_run, new Path("/home/hduser/input_formatter_usage")); 

    job_run.waitForCompletion(true); 
} 
} 

Линия

job_run.setInputFormatClass(NL_inputformatter.class) 

показывает ошибку

NL_inputformatter - это пользовательский класс Inputformatter, который расширяет FileInputFor mat

Есть ли что-то, что мне нужно импортировать для setInputFormatClass, потому что ошибка проверки по умолчанию в Eclipse просит меня изменить setInputFormatClass на setOutFormatClass, но не запрашивает никакого импорта.

Исходный код для NL_inputformatter приведен ниже.

package com.nline_delimiter; 

import java.io.IOException; 

import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapred.FileInputFormat; 
import org.apache.hadoop.mapred.FileSplit; 
import org.apache.hadoop.mapred.InputSplit; 
import org.apache.hadoop.mapred.JobConf; 
import org.apache.hadoop.mapred.RecordReader; 
import org.apache.hadoop.mapred.Reporter; 

public class NL_inputformatter extends FileInputFormat<Text, IntWritable>{ 

@Override 
public RecordReader<Text, IntWritable> getRecordReader(InputSplit input, 
     JobConf job_run, Reporter reporter) throws IOException { 
    // TODO Auto-generated method stub 
    System.out.println("I am Inside the NL_inputformatter class"); 
    reporter.setStatus(input.toString()); 
    return new NL_record_reader(job_run, (FileSplit)input); 


} 

} 

Ваша помощь будет оценена.

+0

Показывает, какая ошибка? Пожалуйста, опубликуйте ошибку компилятора и исходный код NL_inputformatter. –

+0

По желанию у меня есть сумматор исходного кода для NI_inputformatter .... Ну, ошибка -------- Метод setInputFormatClass (Class ) в типе Job не применим для аргументов (Класс ) – Sam

ответ

0

Это потому, что вы используете FileInputFormat из старого Hadoop API с новым. Вы должны изменить свой импорт и свою реализацию:

import org.apache.hadoop.mapred.FileInputFormat; 

к

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
+0

Это не решает проблему! –

+0

У вас нет проблемы, может быть, у вас другая ... и, возможно, есть другая проблема, но ошибка в комментарии Max от 20 апреля полностью связана с импортированным классом. –

Смежные вопросы