2014-11-08 1 views
1

나는 하 웁 스트리밍 작업을하고 있습니다. 이 일은 다른 python 스크립트를 가져 오는 python 스크립트를 사용합니다. 이 명령은 명령 줄에서 제대로 작동하지만 hadoop 스트리밍을 사용할 때 실패합니다. 여기 내 하둡 스트리밍 명령여러 개의 python 파일로 Hadoop 스트리밍

hadoop jar $streamingJar \ 
    -D mapreduce.map.memory.mb=4096 \ 
    -files preprocess.py,parse.py \ 
    -input $input \ 
    -output $output \ 
    -mapper "python parse.py" \ 
    -reducer NONE 

의 예입니다 그리고 여기가 내가 볼 하둡 스트리밍을 통해 명령을 실행하면 parse.py

from preprocess import normalize_large_text, normalize_small_text 

의 첫 번째 라인 로그

에서 다음과 같은 출력
Traceback (most recent call last): 
    File "preprocess.py", line 1, in <module> 
    from preprocess import normalize_large_text, normalize_small_text, normalize_skill_cluster 
ImportError: No module named preprocess 

내 이해는 hadoop이 모든 파일을 같은 디렉토리에 넣었습니다. 이것이 사실이라면 나는 이것이 어떻게 실패 할 수 있는지 보지 못한다. 아무도 무슨 일이 일어나는지 알아?

감사합니다.

답변

2

스크립트를 동일한 디렉토리에 추가하고 파일 플래그를 사용하여 추가해야합니다.

hadoop jar $streamingJar -D mapreduce.map.memory.mb=4096 -files python_files 
-input $input -output $output -mapper "python_files\python parse.py" -reducer NONE