복붙노트

[HADOOP] 제어 하둡의 감속기하지 않을

HADOOP

제어 하둡의 감속기하지 않을

I는 화상 판독 RGB 배열에 저장할 수 하둡 맞춤 inputformat 및 데이터 유형을 기록했다. 내지도에 구현하고 기능을 감소시킬 때, 제어는 감속기 기능으로 이동하지 않습니다.

import java.io.IOException;
import java.util.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

public class Image {

    public static class Map extends Mapper<Text, ImageM, Text, ImageM> {

        public void map(Text key, ImageM value, Context context) throws IOException,     
        InterruptedException {
          /*
           for(int i=0;i<value.Height;i++)
           {
               System.out.println();
               for(int j=0;j<value.Width;j++)
               {
                   System.out.print(" "+value.Blue[i][j]);
               }
           }       
           */
           context.write(key, value);


        } 
    }

    public static class Reduce extends Reducer<Text, ImageM, Text, IntWritable> {

        public void reduce(Text key, ImageM value, Context context) 
         throws IOException, InterruptedException {

           for(int i=0;i<value.Height;i++)
           {
               System.out.println();
               for(int j=0;j<value.Width;j++)
               {
                   System.out.print(value.Blue[i][j]+" ");
               }
           }
           IntWritable m = new IntWritable(10);
           context.write(key, m);
        }
    }

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();

        Job job = new Job(conf, "wordcount");

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(ImageM.class);

        job.setMapperClass(Map.class);
        job.setReducerClass(Reduce.class);

        job.setInputFormatClass(ImageFileInputFormat.class);
        job.setOutputFormatClass(TextOutputFormat.class);

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        long start = new Date().getTime();    
        job.waitForCompletion(true);
        long end = new Date().getTime();
        System.out.println("Job took "+(end-start) + " milliseconds");
    }

}

여기서,지도의 기능 키를 입력 포맷에 따라 파일 이름을 제공한다.

나는 "icon2.gif Imagem의의 @의 31093d14"로 출력을 얻을

내 데이터 형식 만 매퍼에서 사용하는 경우 모든 것은 괜찮습니다. 어디에 문제가 u는 추측 할 수 있나요?

해결법

  1. ==============================

    1.귀하의 감소 함수 서명이 잘못되었습니다. 그것은해야한다:

    귀하의 감소 함수 서명이 잘못되었습니다. 그것은해야한다:

    @Override
    public void reduce(Text key, Iterable<ImageM> values, Context context) 
         throws IOException, InterruptedException
    

    당신을 위해 컴파일러 지점이 오류를 수 있도록하기 위해 @Override 주석을 사용하십시오.

  2. from https://stackoverflow.com/questions/24583029/control-is-not-going-to-the-reducer-in-hadoop by cc-by-sa and MIT license