2014-11-09 2 views
0

저는 2 시간 동안이 작업에 어려움을 겪었습니다!AWS EMR의 MapReduce 코드에서 사용자 정의 함수 가져 오기

다른 파이썬 스크립트에서 내 사용자 지정 함수 중 하나를 가져 오는 파이썬에서 매퍼 스크립트를 만들었습니다.

#!/usr/bin/env python 
    import sys 

    import testImport 

    for line in sys.stdin: 
     if line and line!='': 
      words = line.strip().lower().split('\t') 
      print '%s\t%s' % (words[0].strip(),testImport.age_classify(int(words[1]))) 

이 코드는 내 단말기에서 잘 작동합니다 ... 문제는 AWS Elastic MapReduce에이 매퍼 함수를 ​​업로드 할 때입니다. 내 작업이 "모듈 testImport 가져 오기 실패"오류와 함께 실패합니다.

testImport는 표준 입력의 각 줄에서 작동해야하는 (도우미 함수와 같은) 일부 도우미 함수가 포함 된 'testImport.py'파일입니다.

내 매퍼 스크립트 (주어진 스크립트)와 동일한 버킷에 스크립트를 업로드했습니다.

'스트리밍 프로그램'단계를 ​​추가 할 때 인수 섹션에서 전달하려고했습니다. 나는 모든 관련 질문을 본 후에도 어떻게 해야할지 전혀 모른다.

어떻게해야합니까?

도움이 될 것입니다.

감사합니다.

+0

[mrjob] (https://github.com/Yelp/mrjob) – Mehraban

답변

0

당신은 내가 map/reduce 스크립트와 동일한 버켓에 testImport.py를 업로드했다고 말했기 때문에. EMR은 사용자가 지정하지 않으면 해당 버킷에서 읽을 수 없습니다.

java의 경우, 모든 관련 클래스에 대해 fatjar를 작성하고 단일 jar 파일을 작성하여 실행했습니다. 파이썬 스크립트의 경우, 단일 맵 스크립트 및 축소 스크립트를 작성하여 실행하십시오.

관련 문제