gpt4 book ai didi

python-2.7 - Oozie python 工作流中的 ImportError : No module named pydoop. hdfs

转载 作者:可可西里 更新时间:2023-11-01 15:31:27 26 4
gpt4 key购买 nike

我写了一个将本地文件复制到 HDFS 的 python 脚本。

在集群的所有节点中将 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运行这个脚本,这个脚本可以在集群中的任何一个节点中执行。所以在hadoop集群中的所有节点(nodemanager节点)安装所有需要的python包。

关于python-2.7 - Oozie python 工作流中的 ImportError : No module named pydoop. hdfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32048557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com