복붙노트

[HADOOP] 어떻게 (Hadoop에서), 데이터를지도에 넣고 올바른 유형의 함수를 축소합니까?

HADOOP

어떻게 (Hadoop에서), 데이터를지도에 넣고 올바른 유형의 함수를 축소합니까?

Hadoop을 이해하는 데 어려움을 겪고 있는데, 어떻게 데이터를지도에 넣고 기능을 줄였습니다. 입력 형식과 출력 형식을 정의한 다음 입력과 출력을위한 키 형식을 정의 할 수 있다는 것을 알고 있습니다. 그러나 객체를 입력 유형으로 사용하려는 경우, Hadoop은 내부적으로 어떻게 처리합니까?

고맙습니다 ...

해결법

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

    1.Hadoop InputFormat 및 OutputFormat 인터페이스를 사용하여 사용자 지정 형식을 만들 수 있습니다. 예를 들어 MapReduce 작업의 출력을 JSON으로 형식화 할 수 있습니다.

    Hadoop InputFormat 및 OutputFormat 인터페이스를 사용하여 사용자 지정 형식을 만들 수 있습니다. 예를 들어 MapReduce 작업의 출력을 JSON으로 형식화 할 수 있습니다.

    public class JsonOutputFormat extends TextOutputFormat<Text, IntWritable> {
        @Override
        public RecordWriter<Text, IntWritable> getRecordWriter(
                TaskAttemptContext context) throws IOException, 
                      InterruptedException {
            Configuration conf = context.getConfiguration();
            Path path = getOutputPath(context);
            FileSystem fs = path.getFileSystem(conf);
            FSDataOutputStream out = 
                    fs.create(new Path(path,context.getJobName()));
            return new JsonRecordWriter(out);
        }
    
        private static class JsonRecordWriter extends 
              LineRecordWriter<Text,IntWritable>{
            boolean firstRecord = true;
            @Override
            public synchronized void close(TaskAttemptContext context)
                    throws IOException {
                out.writeChar('{');
                super.close(null);
            }
    
            @Override
            public synchronized void write(Text key, IntWritable value)
                    throws IOException {
                if (!firstRecord){
                    out.writeChars(",\r\n");
                    firstRecord = false;
                }
                out.writeChars("\"" + key.toString() + "\":\""+
                        value.toString()+"\"");
            }
    
            public JsonRecordWriter(DataOutputStream out) 
                    throws IOException{
                super(out);
                out.writeChar('}');
            }
        }
    }
    
  2. from https://stackoverflow.com/questions/10961474/how-in-hadoop-is-the-data-put-into-map-and-reduce-functions-in-correct-types by cc-by-sa and MIT license