我有一个hadoop流媒体工作。这个工作使用python脚本导入另一个python脚本。该命令在命令行中运行良好,但在使用hadoop流时失败。这是我的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
当我通过hadoop流程运行命令时,我在日志中看到以下输出
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将所有文件放在同一目录中。如果这是真的那么我不知道这可能会失败。有谁知道发生了什么事?
由于
答案 0 :(得分:3)
您需要将脚本添加到同一目录,并使用files flag添加它们。
hadoop jar $streamingJar -D mapreduce.map.memory.mb=4096 -files python_files
-input $input -output $output -mapper "python_files\python parse.py" -reducer NONE