Воздушный поток BashOperator - sshpass: команда не найдена, но sshpass уже установлен - PullRequest
0 голосов
/ 20 апреля 2020

Я действительно новичок в Airflow и теперь использую docker Airflow v1.7.1.3.

В одном DAG у меня есть BashOperator:

B1 = BashOperator(
    task_id="bz2",
    bash_command="""sshpass -p 'xxxx' ssh -o StrictHostKeyChecking=no hadoop@10.220.52.69 "\
    spark2-submit \
    --conf "spark.kryoserializer.buffer.max=1g" \
    --conf "spark.yarn.executor.memoryOverhead=3g" \
    --conf "spark.driver.memory=15g" \
    --conf "spark.driver.cores=4"\
    /home/hadoop/test/bz2.py \
    --path_bz2 /ABC/{year}/{month}/{day}/single_{year}_{month}_{day}.tar.bz2"
    """.format(year=YEAR, month=MONTH, day=DAY),
    retries=3,
    dag=dag
)

Когда я запускаю DAG, это не удалось. В журнале отображается

[2020-04-20 08:23:07,324] {bash_operator.py:73} INFO - Output:
[2020-04-20 08:23:07,325] {bash_operator.py:77} INFO - /tmp/airflowtmpXi0HH8/bz2_transformftkAnI: line 1: sshpass: command not found
[2020-04-20 08:23:07,326] {bash_operator.py:80} INFO - Command exited with return code 127

Однако на сервере, где активирован контейнер воздушного потока docker, команда sshpass уже установлена ​​и может быть выполнена без проблем.

(base) hadoop@OL-HADOOP-APP-01:~$ sshpass
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename   Take password to use from file
   -d number     Use number as file descriptor for getting password
   -p password   Provide password as argument (security unwise)
   -e            Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin

   -h            Show help (this screen)
   -V            Print version information
At most one of -f, -d, -p or -e should be used

Что я мог попытаться исправить? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...