2016-05-26 29 views
-1

Driver类:减速机不工作或从不歌厅呼叫

import java.io.IOException; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.NullWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
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 DRIVER { 


public static void main(String arg[]) 
{ 
    try{ 
    Path in = new Path("aamazon.txt"); 
    Path out = new Path("/output"); 

    Configuration conf = new Configuration(); 

    Job job = Job.getInstance(conf); 
    job.setJarByClass(DRIVER.class); 
    job.setMapperClass(MAPPER.class); 
    job.setReducerClass(REDUCER.class); 
    job.setNumReduceTasks(0); 

    FileInputFormat.addInputPath(job, in); 
    FileOutputFormat.setOutputPath(job, out); 

    job.waitForCompletion(true); 

    System.out.println("Successful");} 

    catch(Exception e){ 
     System.out.println(e.getMessage()); 
    } 


} 
} 

映射类:

import java.io.IOException; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.NullWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Mapper; 

public class MAPPER extends Mapper<LongWritable,Text,LongWritable,Text>{ 

@Override 
public void map(LongWritable key,Text value,Context con) 
{ 
    try 
    { 

     System.out.println(key +"\n"+ value); 
     con.write(key, value); 

    } 

    catch(Exception e) 
    { 
     System.out.println(e.getMessage()); 
    } 
} 
} 

减速机类:

import java.io.IOException; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.NullWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Reducer; 

public class REDUCER extends Reducer<LongWritable,Text,LongWritable,Text>{ 

@Override 
public void reduce(LongWritable key,Iterable<Text> value , Context con) 
{ 
    System.out.println("reducer"); 
    try{ 
    for(Text t:value) 
    { 

     con.write(key, t); 
    } 
    } 
    catch (Exception e) 
    { 
     System.out.println(e.getMessage()); 
    } 
} 
} 

问题:

  1. 执行工作,直到映射
  2. 减速不会被调用
  3. 如果我设置setNumReduceTasks(0)然后映射是没有得到所谓的

任何想法有什么不好?

回答

0

您已将减少任务的数量设置为零。

Job job = Job.getInstance(conf); 
    job.setJarByClass(DRIVER.class); 
    job.setMapperClass(MAPPER.class); 
    job.setReducerClass(REDUCER.class); 
    job.setNumReduceTasks(0); // this should be greater than 0 

即使之后,如果它不工作检查您对以下行的“/输出”路径的权限 -

Path out = new Path("/output"); // it is in the root folder. change it to "./output" 
+0

即使我删除0或不把这些代码,仍然减速机不工作 – Ash

+0

我通过运行该程序进行检查。它工作得很好。如果我将减少任务的数量设置为零,它会简单地跳过减少并成功退出,而不会出现任何错误。如果您在发布堆栈跟踪或任何记录的信息(发布此问题时应该这样做)仍然出现错误。 – ViKiG

+0

你是救命的人...感谢伴侣。 “./output”为我工作...欣赏 – Ash