【问题标题】:Hadoop streaming with multiple python files具有多个 python 文件的 Hadoop 流
【发布时间】:2014-11-08 10:42:03
【问题描述】:

我有一份 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把所有文件放在同一个目录下。如果这是真的,那么我看不出这怎么会失败。有谁知道怎么回事?

谢谢

【问题讨论】:

    标签: python hadoop hadoop-streaming


    【解决方案1】:

    您需要将脚本添加到同一目录并使用文件标志添加它们。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      相关资源
      最近更新 更多