Python 2.7 ImportError:Oozie python工作流中没有名为pydoop.hdfs的模块
我编写了一个python脚本,将本地文件复制到HDFS 在集群的所有节点中将python版本2.6升级到2.7。已安装pydoop-1.0版本并使用CDH 5.4 如果我在命令行中运行py脚本,它就可以正常工作。当我在oozie中运行时,同样的脚本抛出下面的错误 错误:Python 2.7 ImportError:Oozie python工作流中没有名为pydoop.hdfs的模块,python-2.7,hadoop,oozie,cloudera-cdh,Python 2.7,Hadoop,Oozie,Cloudera Cdh,我编写了一个python脚本,将本地文件复制到HDFS 在集群的所有节点中将python版本2.6升级到2.7。已安装pydoop-1.0版本并使用CDH 5.4 如果我在命令行中运行py脚本,它就可以正常工作。当我在oozie中运行时,同样的脚本抛出下面的错误 错误: import pydoop.hdfs as hdfs ImportError: No module named pydoop.hdfs Failing Oozie Launcher, Main class [org.apach
import pydoop.hdfs as hdfs
ImportError: No module named pydoop.hdfs
Failing Oozie Launcher, Main class
[org.apache.oozie.action.hadoop.ShellMain], exit code [1]
Oozie工作流
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app name="FileLogPy" xmlns="uri:oozie:workflow:0.4">
<start to="FileLog"/>
<action name="FileLog">
<shell xmlns="uri:oozie:shell-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path='${outputHadoopDirectory}'/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>python</exec>
<argument>FileLog.py</argument>
<argument>${inputDir}</argument>
<argument>${outputHadoopDirectory}</argument>
<argument>${kpi}</argument>
<argument>${sourceName}</argument>
<argument>${wf:id()}</argument>
<file>${LogScriptPath}#FileLog.py</file>
<capture-output/>
</shell>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
需要帮助
谢谢。这可能是因为所有节点中都缺少pydoop库。如果在本地运行脚本,则python脚本将在同一台计算机中触发。在那台机器里有pydoop库。但是,如果通过oozie运行该脚本,该脚本可以在集群中的任何节点中执行。因此,在hadoop集群中的所有节点(nodemanager节点)中安装所有必需的python包。我已经在集群中的所有节点中安装了pydoop。分别在所有节点中测试此脚本。很好。但在oozie我还是会犯这个错误。
#!/usr/bin/python
import pydoop.hdfs as hdfs