BashOperator вызывает ImportError для библиотеки, используемой в других PythonOperators - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть набор задач в модуле dag builder, который использует оператор Python, который используется во всем мире в Airflow.Я развертываю поток воздуха с помощью докера на kubernetes.

Задача не выполняется с сообщением об ошибке: no module named pandas.Другие задачи с использованием панд успешны.

Да, я вошел в контейнер (рабочие) и обнаружил, что pip3 freeze показывает панд.

2018-12-13 12:30:23,332] {bash_operator.py:87} INFO - Temporary script location: /tmp/airflowtmppkovwfth/pscript_pclean_zjg4qfamp9pda9jsxysyrqfj_AWFtK5ucowyw2
[2018-12-13 12:30:23,333] {bash_operator.py:97} INFO - Running command: python /usr/local/airflow/rootfs/mopng_baseline_v2/scripts/pclean_zjg4qfamp9pda9jsxysyrqfj_AWFtK.py /usr/local/airflow/rootfs/mopng_baseline_v2/scheduled__2018-12-12T14:00:00+00:00/appended/DsDnV0TjSHnL0DF53JLjmUtO.csv /usr/local/airflow/rootfs/mopng_baseline_v2/scheduled__2018-12-12T14:00:00+00:00/pcleaned/ztYVV9nkh5t425gYjFqKuAD9.csv
[2018-12-13 12:30:23,344] {bash_operator.py:106} INFO - Output:
[2018-12-13 12:30:23,359] {bash_operator.py:110} INFO - Traceback (most recent call last):
[2018-12-13 12:30:23,359] {bash_operator.py:110} INFO -   File "/usr/local/airflow/rootfs/mopng_baseline_v2/scripts/pclean_zjg4qfamp9pda9jsxysyrqfj_AWFtK.py", line 3, in <module>
[2018-12-13 12:30:23,359] {bash_operator.py:110} INFO -     import pandas as pd
[2018-12-13 12:30:23,360] {bash_operator.py:110} INFO - ImportError: No module named pandas
[2018-12-13 12:30:23,362] {bash_operator.py:114} INFO - Command exited with return code 1
[2018-12-13 12:30:23,383] {models.py:1736} ERROR - Bash command failed
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/airflow/models.py", line 1633, in _run_raw_task
    result = task_copy.execute(context=context)
  File "/usr/local/lib/python3.5/dist-packages/airflow/operators/bash_operator.py", line 118, in execute
    raise AirflowException("Bash command failed")
airflow.exceptions.AirflowException: Bash command failed

1 Ответ

0 голосов
/ 13 декабря 2018

Ошибка оператора не PythonOperator, а BashOperator.Наиболее вероятная причина в том, что python в Bash в настоящее время указывает на другую среду Python, отличную от той, в которой работает Airflow.

Обязательно укажите python3 в вашей BashOperator или любую дополнительную конфигурацию, которая вам нужнавызвать Python из командной строки в той же среде, что и ваш PythonOperator.

...