2012-06-04 3 views
3

나는 datetime을 다른 시간대로 변환하기 위해 python UDF를 만들었습니다. 이 스크립트는 python (또는 jython)과 함께 제공되지 않는 pytz를 사용합니다. 나는 몇 가지를 시도했다 :아마존 EMR에서 Pig UDF 용 외부 파이썬 모듈로드

  1. 부트 스트랩 돼지는 자이 썬 설치에서 pytz을 포함하여 자신의 자이 썬과를 설치하기 위해서는. 새로 설치된 자이 썬을 PIG에 사용할 수 없으며 Amazon의 자이 썬으로 되돌려 놓는다.
  2. 새로운 모듈은
  3. 자이 썬의 새 설치 HADOOP_CLASSPATH/PIG_CLASSPATH 설정 설치되어있는 로컬 디렉토리에 PYTHONPATH 설정은

이들 각각은과 끝 없다 "ImportError를 : 없음 모듈 이름 pytz을" UDF 스크립트를로드하려고합니다. pytz를 제거하면 스크립트가 제대로로드되어 문제를 일으키는 외부 모듈이됩니다.

편집 : 원래 주석으로이를 넣어하지만 난 단지 그것을 편집 할 거라고 생각 : 나는 다른 자이 썬 항아리를 인식 돼지를 얻을 내가 아는 모든 방법을 시도했습니다

합니다. 그건 효과가 없습니다. Amazon의 자이 썬은 /home/hadoop/.versions/pig-0.9.2/lib/pig/jython.jar이며 sys.path :/home/hadoop/lib/Lib을 인식하고 있습니다. 이 병에 대해 외부 라이브러리를 빌드하는 방법을 알아낼 수 없습니다.

+0

http://stackoverflow.com/questions/6811549/how-can-i-include-a-python-package-with-hadoop-streaming-job/6811775#6811775 당신을 도울 수 있습니다. 다른 모듈이지만 방법은 동일해야 함) –

+0

또는 http://stackoverflow.com/questions/8129543/hadoop-streaming-importing-modules-on-emr –

+0

예, 패키지를 각 슬레이브로 부트 스트랩하려고했습니다. . 문제는 내가 설치 한 자이 썬 항아리를 PIG에 사용할 수 없다는 것입니다. 대신 외부 라이브러리가 설치되지 않은 Amazon의 자이 썬 항아리를 선택합니다. –

답변

0

수동으로 jython 스크립트의 sys.path를 해킹 할 수 있습니까?

+0

나는 시도 할 수 있지만 자이 썬 항아리가 Hadoop에 의해로드되었다고 생각한다. 로드 된 자이 썬 항아리에 대해 빌드되지 않은 라이브러리로 경로를 전환 할 것이기 때문에 작동하는지 확실하지 않습니다. 나는 그것을 밖으로 시도 할 것이다. –

+0

새로운 jython jar 경로를 sys.path 목록에 추가했지만 여전히 모듈을 찾을 수 없다는 불만을 제기합니다. –

+0

UDF 스크립트에서 sys.path를 인쇄 할 수 있습니까? pytz를 포함하는 디렉토리를 포함하도록 PYTHONPATH를 해킹했는지, 그 디렉토리가 실제로 sys.path에 들어가는 지 또는 hadoop이 그것을 덮어 쓰는 지 궁금하다. 그것을 덮어 쓰는 경우 특수 jython jar 파일을 추가하는 대신 스크립트에서 직접 sys.path에 디렉토리를 수동으로 추가 할 수 있습니다. – mhawthorne