복붙노트

[HADOOP] 저장 및 하둡 작업의 복잡한 쓰기 가능한 값을 읽어

HADOOP

저장 및 하둡 작업의 복잡한 쓰기 가능한 값을 읽어

나는 다른지도-감소 작업의 입력에 1지도-감소 작업의 출력에서 ​​(쓰기 가능을 구현하는) 복잡한 값을 이동해야합니다. 첫번째 작업의 결과를 파일로 저장. 파일은 텍스트 데이터 또는 (기본 출력 \ 입력 형식과) BytesWritable를 저장할 수 있습니다. 그래서 난 내 기록 가능 BytesWritable하고 그것에서 또는 텍스트로 변환하는 간단한 방법이 필요합니다. 이 존재합니까? 어떤 다른 방법은이 작업을 수행하려면? 많은 감사

해결법

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

    1.사용자 IRW이 올바른지, SequenceFileOutputFormat를 사용합니다. SequenceFile는 쓰기 가능을 텍스트로 변환하지 않고이 정확한 문제를 해결합니다. 작업을 설정할 때 사용중인 쓰기 가능한 하위 클래스를 설정하는 job.setOutputKeyClass 및 job.setOutputValueClass을 사용합니다 :

    사용자 IRW이 올바른지, SequenceFileOutputFormat를 사용합니다. SequenceFile는 쓰기 가능을 텍스트로 변환하지 않고이 정확한 문제를 해결합니다. 작업을 설정할 때 사용중인 쓰기 가능한 하위 클래스를 설정하는 job.setOutputKeyClass 및 job.setOutputValueClass을 사용합니다 :

    job.setOutputKeyClass(MyWritable1.class);
    job.setOutputValueClass(MyWritable2.class);
    job.setOutputFormatClass(SequenceFileOutputFormat.class);
    

    이것은 당신의 Writables를 저장하기 위해 하둡 SequenceFile 형식을 사용합니다. 그런 다음 다음 작업에 SequenceFileInputFormat을 사용합니다 :

    job.setInputFormatClass(SequenceFileInputFormat.class);
    

    그런 다음이 작업의 매퍼의 입력 키와 값은 원래 이전 작업의 출력으로 지정된 두 개의 쓰기 가능 클래스가 될 것입니다.

    당신의 복잡한 쓰기 가능한 하위 클래스가 올바르게 구현하는 것이 중요합니다, 참고. 당신이 빈 생성자가 있어야한다는 사실을 넘어, 쓰기 및 readFields의 방법은 클래스의 모든 쓰기 가능한 필드도 작성하고 자신의 정보를 읽을 수 있도록 구현해야합니다.

  2. from https://stackoverflow.com/questions/19376074/save-and-read-complicated-writable-value-in-hadoop-job by cc-by-sa and MIT license