2012-02-14 3 views
4

지도 기능은 모든 입력에 대해 파일을 읽어야합니다. 그 파일은 전혀 변하지 않습니다. 읽기 전용입니다. 분산 캐시는 생각보다 많이 도움이 될 수 있지만 사용 방법을 찾을 수 없습니다. public void configure (JobConf conf) 함수는 재정의 할 필요가 있다고 생각합니다. JobConf는 확실히 사용되지 않습니다. 모든 DistributedCache 자습서에서는 더 이상 사용되지 않는 방법을 사용합니다. 내가 무엇을 할 수 있을지? 내가 재정의 할 수있는 또 다른 구성 기능이 있습니까 ?? 모든지도 작업을위한 Hadoop 캐시 파일

내지도 기능의 첫 번째 라인은 다음과 같습니다

나는 MFILE 내지도 기능은 계속해서 또 다시

답변

1

Jobconf

했다 그것을 볼 필요하지 않도록하는 것이 캐시 할
 Configuration conf = new Configuration();   //load the MFile 
    FileSystem fs = FileSystem.get(conf); 
    Path inFile = new Path("planet/MFile");  
    FSDataInputStream in = fs.open(inFile); 
    DecisionTree dtree=new DecisionTree().loadTree(in); 

0.20. x에서 사용 중지되었지만 1.0.0에서는 사용되지 않습니다. :-) 질문에

(이 글을 쓰는 현재),지도를 실행 자바 작업을 줄일 수있는 방법은 두 가지가있다하는 것은 (하나는 org.apache.hadoop.mapreduce 패키지 (extending) 클래스를 사용하는 것입니다 및 기타 org.apache.hadoop.mapred 패키지에 implementing 클래스입니다 또는 다른 방향 라운드).

어느 쪽을 사용하고 있는지 확실하지 않은 경우 configure 무시 방법을 사용하지 않으면 setup 무시 방법이 표시됩니다.

@Override 
protected void setup(Context context) throws IOException, InterruptedException 

이것은 configure와 비슷하며 도움이됩니다.

extend Mapper classorg.apache.hadoop.mapreduce 패키지에 setup 메서드를 입력하면 override이됩니다.

+0

나는 이것을 지금 시험해보고 결과를 말할 것이다. 고마워요 :) – jojoba

5

글쎄, 내가 생각 했어. 나는 라비 밧의 팁을 따라 난이 쓴 : 내가 이렇게 캐시에 추가 내 주요 방법 내부

@Override 
    protected void setup(Context context) throws IOException, InterruptedException 
    {  
     FileSystem fs = FileSystem.get(context.getConfiguration()); 
     URI files[]=DistributedCache.getCacheFiles(context.getConfiguration()); 
     Path path = new Path(files[0].toString()); 
     in = fs.open(path); 
     dtree=new DecisionTree().loadTree(in);     
    } 

을 :

DistributedCache.addCacheFile(new URI(args[0]+"/"+"MFile"), conf); 
    Job job = new Job(conf, "MR phase one"); 

을 나는이 함께 필요로하는 파일을 검색 할 수 있어요 하지만 100 % 작동하는지 아직 알 수 없습니다. 테스트 할 방법이 있습니까? 감사.

+0

좋아, 내가 다시 가져 가라. 그것은 확실히 작동합니다. 그것은 악마처럼 실행됩니다. 그리고 또한, 내가 가지고있는 데 사용되는 너무 많은 파일을 열지 못했습니다 .. Hooooraayy – jojoba

관련 문제