Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/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 2.7 ImportError:Oozie python工作流中没有名为pydoop.hdfs的模块_Python 2.7_Hadoop_Oozie_Cloudera Cdh - Fatal编程技术网

Python 2.7 ImportError:Oozie python工作流中没有名为pydoop.hdfs的模块

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

我编写了一个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.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