![](/img/trans.png)
[英]import oozie.common.file as file ImportError: No module named oozie
[英]ImportError: No module named pydoop.hdfs in Oozie python workflow
我寫了一個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>
在腳本中添加了hashbang。 這樣就不會檢查python 2.6版本。
#!/usr/bin/python
import pydoop.hdfs as hdfs
需要幫忙 !
謝謝。
這可能是因為所有節點中都沒有pydoop庫。 如果您在本地運行腳本,則會在同一台計算機上觸發python腳本。 在那台機器上,您有pydoop庫。 但是,如果通過oozie運行此腳本,則該腳本可以在集群中的任何節點上執行。 因此,請將所有必需的python軟件包安裝在hadoop集群中的所有節點(nodemanager節點)中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.