복붙노트

[HADOOP] Hadoop MapReduce 스크립트에서 외부 라이브러리 가져 오기

HADOOP

Hadoop MapReduce 스크립트에서 외부 라이브러리 가져 오기

Amazon EMR Hadoop 구현에서 Python MapReduce 스크립트를 실행하고 있습니다. 기본 스크립트의 결과로 항목 항목 유사성이 나타납니다. 애프터 케어 단계 에서이 출력을 각 항목에 대해 별도의 S3 버킷으로 나누고 싶습니다. 따라서 각 항목 버킷에는 비슷한 항목 목록이 포함됩니다. 이를 달성하기 위해 애프터 케어 단계의 축소 기능에 Amazons boto python 라이브러리를 사용하고 싶습니다.

미리 감사드립니다. 도마

해결법

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

    1.hadoop 프로세스를 시작할 때 사용 가능한 외부 파일을 지정할 수 있습니다. -files 인수를 사용하여 수행됩니다.

    hadoop 프로세스를 시작할 때 사용 가능한 외부 파일을 지정할 수 있습니다. -files 인수를 사용하여 수행됩니다.

    $ HADOOP_HOME / bin / hadoop jar /usr/lib/COMPANY/analytics/libjars/MyJar.jar-파일 hdfs : //PDHadoop1.corp.COMPANY.com : 54310 / data / geoip / GeoIPCity.dat

    파일이 HDFS에 있어야하는지 모르겠지만 자주 실행되는 작업 인 경우에는 파일을 저장하는 것이 좋지 않습니다. 코드에서 비슷한 것을 할 수 있습니다

    if (DistributedCache.getLocalCacheFiles(context.getConfiguration()) != null) {
        List<Path> localFiles = Utility.arrayToList(DistributedCache.getLocalCacheFiles(context.getConfiguration()));
        for (Path localFile : localFiles) {
            if ((localFile.getName() != null) && (localFile.getName().equalsIgnoreCase("GeoIPCity.dat"))) {
                Path path = new File(localFile.toUri().getPath());
            }
        }
    }
    

    이것은 여러 Mappers의 작업 코드에서 직접 복사하여 붙여 넣는 것입니다.

    나는 당신의 질문의 두 번째 부분에 대해 모른다. 바라건대 첫 번째 부분에 대한 답변으로 시작하십시오. :)

    -files 외에 추가 jar를 포함하기위한 -libjars가 있습니다. 여기에 대한 약간의 정보가 있습니다. 파일 경로가 필요한 생성자가있는 경우 파일이 jar로 패키지되어 있으면 어떻게 "가짜"수 있습니까?

  2. from https://stackoverflow.com/questions/4984894/import-external-libraries-in-an-hadoop-mapreduce-script by cc-by-sa and MIT license