Hadoop流媒体与多个python文件

时间:2014-11-08 00:05:46

标签: 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 "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将所有文件放在同一目录中。如果这是真的那么我不知道这可能会失败。有谁知道发生了什么事?

由于

1 个答案:

答案 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