簡體   English   中英

ImportError:Oozie python工作流程中沒有名為pydoop.hdfs的模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM