Ошибка отправки рабочего процесса в HUE |Ошибка импорта зависимостей - PullRequest
0 голосов
/ 30 января 2019

Я получаю ошибку импорта, когда отправляю рабочий процесс с 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>

1 Ответ

0 голосов
/ 04 февраля 2019

С помощью службы поддержки Cloudera я решил эту проблему следующим образом:

  1. Добавьте ниже к опциям искры:

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

2, для этого средства запуска Spark также необходимо задать это свойство переменной среды, поэтому установите это как задание переменной среды, поэтому установите это как задание переменной среды, поэтому установите это как задание переменной среды, поэтому установите это как задание переменной среды1011 *

<property> 
<name>oozie.launcher.mapred.child.env</name> 
<value>PYSPARK_PYTHON=path_to_venv</value> 
</property>
  • Очевидно, что path_to_venv должен находиться на одном и том же пути во всех узлах кластера.
...