Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个python文件的Hadoop流媒体_Python_Hadoop_Hadoop Streaming - Fatal编程技术网

具有多个python文件的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流媒体工作。此作业使用导入另一个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
回溯(最近一次呼叫最后一次):
文件“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