0

job.waitforcompletion (boolean) 절에서 DriverClass를 컴파일 할 수 없습니다. NoClassFoundException을 발생시킵니다. 예외가 발생하면 run 메서드는 int 값을 요구하는 오류를 throw합니다. 나는 맵리 듀스 새로운 사람이 문제가 무엇인지 제안 API.Could 사용하고 있습니다 :지도 분산 된 캐시 줄이기

import java.io.File; 
import java.io.IOException; 
import java.net.URI; 
import java.net.URISyntaxException; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.conf.Configured; 
import org.apache.hadoop.filecache.DistributedCache; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.util.GenericOptionsParser; 
import org.apache.hadoop.util.Tool; 
import org.apache.hadoop.util.ToolRunner; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat; 
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; 
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; 


public class Dist_Driver extends Configured implements Tool { 

    public int run(String args[]) throws IOException, InterruptedException { 

     // Configuration phase 
     // Configuration conf=new Configuration(); 
     Job job = new Job(new Configuration()); 
     job.setJarByClass(Dist_Driver.class); 

     // Mapper Reducer InputFormat 
     job.setInputFormatClass(FileInputFormat.class); 
     // Mapper and Reducer Class 
     job.setMapperClass(Dist_Mapper.class); 
     job.setReducerClass(DistCache_Reducer.class); 

     job.setOutputFormatClass(TextOutputFormat.class); 
     job.setInputFormatClass(KeyValueTextInputFormat.class); 
     // set FileInputOutput 
     FileInputFormat.addInputPath(job, new Path(args[0])); 
     FileOutputFormat.setOutputPath(job, new Path(args[1])); 
     // setting number of reduce tasks and submit it 
     job.setNumReduceTasks(2); 

     // Lets check if the file exist 
     File f1 = new File("/home/hdfs/trials_mapreduce_progams/emp_id"); 
     if (f1.exists()) 
      System.out.println("The Files Exists"); 
     else 
      System.out.println("The File doesnot exist"); 
     URI path1; 
     try { 
      path1 = new URI(
        "/home/hdfs/trials_mapreduce_progams/emp_lookup.txt"); 
      DistributedCache.addCacheFile(path1, job.getConfiguration()); 
     } catch (URISyntaxException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     if (job.waitForCompletion(true)) 
      return 0; 
     else 
      return 1; 

    } 

    public static void main(String[] args) throws Exception { 

     int exitcode = ToolRunner.run(new Dist_Driver(), args); 
     System.exit(exitcode); 

    } 

} 

답변

0

그냥 추가 ClassNotFoundExceptionrun 메소드 서명

public int run(String args[]) throws IOException, 
            InterruptedException, 
            ClassNotFoundException { 

오류가 발생하는 이유는 당신이 시도하고 try/catch을에 왜냐하면 실행 중에 던져진 ClassNotFoundException이 있으면 반환 값이없고 메서드 이 반환됩니다.

당신이 정말 return 1 오류 종료 코드

catch 절에, 그것을 잡으려고합니다