복붙노트

[HADOOP] 하둡 맵퍼로 다중 입력

HADOOP

하둡 맵퍼로 다중 입력

나는 하둡 감속기에 두 개의 파일을 보내려고하고있다. 나는 DistributedCache을 시도,하지만 난 주에 addCacheFile를 사용하여 넣어 아무것도, 매퍼에서 getLocalCacheFiles으로 돌아 가기 부여하지 않는 것 같습니다.

지금은 파일을 읽기 위해 파일 시스템을 사용하고 있지만, 난 그냥 파일의 이름을 보낼 수 있어요 그래서 나는 로컬로 실행하고 있습니다. 내가 진짜 하둡 시스템에서 실행중인 경우이 작업을 수행하는 방법을 궁금해.

그것을 읽고 있어요 파일을 제외하고 매퍼에 값을 보낼 어쨌든 무엇입니까?

해결법

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

    1.또한 분산 캐시 문제 및 전송 파라미터를 많이했다. 나를 위해 일한 옵션은 다음과 같습니다 :

    또한 분산 캐시 문제 및 전송 파라미터를 많이했다. 나를 위해 일한 옵션은 다음과 같습니다 :

    분산 캐시 사용의 경우 : 나에게는지도에서 HDFS에 파일 또는 줄의 URL / 경로를 얻을 수있는 악몽 이었지만, 심볼릭 링크와 함께 일했다 작업의 실행 () 메서드

    DistributedCache.addCacheFile(new URI(file+"#rules.dat"), conf);
    DistributedCache.createSymlink(conf);
    

    다음지도에서 읽거나 감소 헤더, 방법 전에

    public static FileSystem hdfs;
    

    다음 설정에서 ()지도 또는 감소의 방법

    hdfs = FileSystem.get(new Configuration()).open(new Path ("rules.dat"));
    

    매개 변수의 경우 : 지도 또는 감소 (파일 이름 HDFS에서 열 수) 몇 가지 값을 보내기 :

    public int run(String[] args) throws Exception {
        Configuration conf = new Configuration();
        ...
        conf.set("level", otherArgs[2]); //sets variable level from command line, it could be a filename
        ...
    }
    

    다음지도에서하거나 클래스를 감소 :

    int level = Integer.parseInt(conf.get("level")); //this is int, but you can read also strings, etc.
    
  2. ==============================

    2.분산 캐시는 사용자의 요구에 맞는 경우 - 그것은 갈 수있는 방법입니다.

    분산 캐시는 사용자의 요구에 맞는 경우 - 그것은 갈 수있는 방법입니다.

    getLocalCacheFiles는 로컬 모드와 분산 모드에서 다르게 작동합니다. (실제로 로컬 모드에서 작동하지 않습니다).

    http://developer.yahoo.com/hadoop/tutorial/module5.html이 링크로 봐 문구를 찾습니다 : 경계의 참고로 :

  3. from https://stackoverflow.com/questions/9148724/multiple-input-into-a-mapper-in-hadoop by cc-by-sa and MIT license