2014-04-20 43 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垫

有什么我需要导入的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的源代码....那么错误是--------类型Job中的setInputFormatClass(Class <?extends InputFormat>)方法不适用于参数( Class ) – Sam

回答

0

这是因为您正在使用原来的Hadoop API中的FileInputFormat和新的API。你必须改变你的进口和您的实现:

import org.apache.hadoop.mapred.FileInputFormat; 

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

这并不能解决问题! –

+0

这不是你有这个问题,也许你的不同......也许还有其他问题,但从4月20日的评论中的错误完全是由于导入类。 –