2016-09-20 9 views
1

나는 hadoop 및 mapreduce 파업에 새로운 사람이다. 나는 자신의 파 티저를 쓰고 싶다. 파 테이션에서 파일을 읽어야한다. 나는 여러 번 검색했고 분산 캐시를 사용해야한다는 것을 알게되었습니다. 이게 내 hadoop 파티셔너에서 분산 캐시를 사용할 수있는 나의 질문이다. 내 파타야에서 무엇을 써야 하나?분할 자 hadoop에서 분산 캐시를 사용하는 방법?

public static class CaderPartitioner extends Partitioner<Text,IntWritable> { 

    @Override 
    public int getPartition(Text key, IntWritable value, int numReduceTasks) { 
     return 0; 
    } 
} 

감사

답변

1

이 문제를 해결하는 가장 쉬운 방법은위한 구분자가 하둡에 포함 된 예를 살펴 보는 것입니다. 이 경우에는 직접 키를 돕기 위해 미리 생성 된 파일을 읽는 TotalOrderPartitioner이 있습니다.

소스 코드 here을 찾을 수 있으며 사용 방법을 보여주는 gist입니다.

은 첫째로 당신은 파일이 당신의 맵리 듀스 작업의 (HDFS)에 드라이버에서 찾을 수있는 파티션 프로그램 알려줄 필요가 :에서

// Define partition file path. 
Path partitionPath = new Path(outputDir + "-part.lst"); 
// Use Total Order Partitioner. 
job.setPartitionerClass(TotalOrderPartitioner.class); 
// Generate partition file from map-only job's output. 
TotalOrderPartitioner.setPartitionFile(job.getConfiguration(), partitionPath); 

TotalOrderPartitioner 당신은 implements Configurable가에에게 액세스를 제공하는 것을 볼 수 있습니다 구성을 사용하면 HDFS에서 파일 경로를 가져올 수 있습니다.

파일은 public void setConf(Configuration conf) 메서드에서 읽 힙니다.이 메서드는 Partitioner 개체가 만들어 질 때 호출됩니다. 이 시점에서 파일을 읽고 원하는 설정을 수행 할 수 있습니다.

저는이 파티셔너에서 많은 코드를 재사용 할 수 있다고 생각합니다.

+0

답변 해 주셔서 감사합니다. 미안하지만이 분야에서 정말 새로운데 어떻게 파일을 읽는 지 이해할 수 없습니다. 나에게 더 간단한 예를 들어 줄 수 있니? 감사합니다 – saeednasehi

+0

나는 그것을 didi. 감사 ! 감사 :)) – saeednasehi