具有多个python文件的Hadoop流媒体
我有一个hadoop流媒体工作。此作业使用导入另一个python脚本的python脚本。该命令在命令行中运行良好,但在使用hadoop流时失败。下面是我的hadoop流式处理命令的一个示例具有多个python文件的Hadoop流媒体,python,hadoop,hadoop-streaming,Python,Hadoop,Hadoop Streaming,我有一个hadoop流媒体工作。此作业使用导入另一个python脚本的python脚本。该命令在命令行中运行良好,但在使用hadoop流时失败。下面是我的hadoop流式处理命令的一个示例 hadoop jar $streamingJar \ -D mapreduce.map.memory.mb=4096 \ -files preprocess.py,parse.py \ -input $input \ -output $output \ -mapper
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
回溯(最近一次呼叫最后一次):
文件“preprocess.py”,第1行,在
从预处理导入规范化\大\文本、规范化\小\文本、规范化\技能\集群
ImportError:没有名为preprocess的模块
我的理解是hadoop将所有文件放在同一个目录中。如果这是真的,那么我不认为这会失败。有人知道发生了什么事吗
谢谢您需要将脚本添加到同一目录,并使用files标志添加它们
hadoop jar $streamingJar -D mapreduce.map.memory.mb=4096 -files python_files
-input $input -output $output -mapper "python_files\python parse.py" -reducer NONE