在 HUE 中提交工作流时出错 |依赖项导入错误

Posted

技术标签:

【中文标题】在 HUE 中提交工作流时出错 |依赖项导入错误【英文标题】:Error submitting workflow in HUE | Dependencies Import error 【发布时间】:2019-01-30 20:44:28 【问题描述】:

当我使用 Hue 提交包含 Spark-Action 的工作流时出现导入错误。

回溯如下:

2019-01-30 16:31:48,048 [main] INFO  org.apache.spark.deploy.yarn.ApplicationMaster  - Waiting for spark context initialization...

Traceback (most recent call last):
  File "mover.py", line 7, in <module>
    import happybase
ImportError: No module named happybase
2019-01-30 16:31:48,169 [Driver] ERROR org.apache.spark.deploy.yarn.ApplicationMaster  - User application exited with status 1

在我的集群中,我有一个包含所有依赖项的 Python virtualenv 环境,我的集群是使用 Cloudera 的 Spark 指令配置的,这里:https://www.cloudera.com/documentation/enterprise/latest/topics/spark_python.html

当我在控制台中使用 spark-submit 命令时,我可以毫无问题地运行我的应用程序。问题只是在我使用 Hue 时出现。

研究我发现这篇文章http://www.learn4master.com/big-data/pyspark/run-pyspark-on-oozie 并尝试做同样的事情但没有成功。

我的 Hue 生成的工作流代码是:

<workflow-app name="Copy by hour" xmlns="uri:oozie:workflow:0.5">
<start to="spark-c88a"/>
<kill name="Kill">
<message>Action failed, error message[$wf:errorMessage(wf:lastErrorNode())]</message>
</kill>
<action name="spark-c88a" retry-max="1" retry-interval="1">
<spark xmlns="uri:oozie:spark-action:0.2">
<job-tracker>$jobTracker</job-tracker>
<name-node>$nameNode</name-node>
<configuration>
<property>
<name>spark.executorEnv.PYSPARK_PYTHON</name>
<value>/opt/env_cluster/bin/python2</value>
</property>
<property>
<name>spark.yarn.appMasterEnv.PYSPARK_PYTHON</name>
<value>/opt/env_cluster/bin/python2</value>
</property>
</configuration>
<master>yarn</master>
<mode>cluster</mode>
<name>landing_to_daily</name>
<jar>mover.py</jar>
<arg>1</arg>
<arg>-s</arg>
<arg>eir_landing</arg>
<arg>-d</arg>
<arg>eir_daily</arg>
<file>/user/spark/eir/apps/mover.py#mover.py</file>
</spark>
<ok to="End"/>
<error to="email-77d4"/>
</action>
<action name="email-77d4">
<email xmlns="uri:oozie:email-action:0.2">
<to>prueba@mail.com</to>
<subject>Error | Copy by hour</subject>
<body>Error in Workflow landing to daily </body>
<content_type>text/plain</content_type>
</email>
<ok to="Kill"/>
<error to="Kill"/>
</action>
<end name="End"/>
</workflow-app>

【问题讨论】:

"ImportError: No module named happybase" happybase 模块吗? 感谢您回答 Jordan 我的 Happybase 依赖项已安装在我想使用的 virtualenv 上。当我直接在控制台中使用“spark-submit”命令时,我没有问题,因为我将 Spark 配置如下:问题似乎是HUE忽略了我的配置,想使用操作系统默认的python环境 【参考方案1】:

在 Cloudera 支持的帮助下,我以这种方式解决了这个问题:

    将以下内容添加到 spark opts:

    --conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=path_to_venv --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=path_to_venv

2、Spark Launcher也需要设置这个环境变量,所以设置为job属性

<property> 
<name>oozie.launcher.mapred.child.env</name> 
<value>PYSPARK_PYTHON=path_to_venv</value> 
</property>
显然 path_to_venv 在集群的所有节点中必须位于同一路径中。

【讨论】:

以上是关于在 HUE 中提交工作流时出错 |依赖项导入错误的主要内容,如果未能解决你的问题,请参考以下文章

将分叉存储库作为 react.js 依赖项导入时出错 [重复]

Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”

在 hue 中运行 livy spark 服务器时出错

在 gradle 项目中添加 graphql 依赖项时出错

导入带有可选链接的模块时出错

制作色调应用程序时出错