在气流中找不到 spark-submit 命令

spark-submit command not found in airflow

我正在尝试 运行 我在气流中的 spark 作业,当我在终端中执行此命令 spark-submit --class dataload.dataload_daily /home/ubuntu/airflow/dags/scripts/data_to_s3-assembly-0.1.jar 时,它工作正常,没有任何问题。

然而,我在气流中做同样的事情,但不断收到错误

/tmp/airflowtmpKQMdzp/spark-submit-scalaWVer4Z: line 1: spark-submit: command not found

t1 = BashOperator(task_id = 'spark-submit-scala',
bash_command = 'spark-submit --class dataload.dataload_daily \
/home/ubuntu/airflow/dags/scripts/data_to_s3-assembly-0.1.jar',
dag=dag,
retries=0,
start_date=datetime(2018, 4, 14))

我在 bash_profile、

中提到了我的 spark 路径
export SPARK_HOME=/opt/spark-2.2.0-bin-hadoop2.7
export PATH="$SPARK_HOME/bin/:$PATH"

也获取了此文件。不确定如何调试,谁能帮我解决这个问题?

您可以从 bash_command = 'echo $PATH' 开始,看看您的路径是否更新正确。

这是因为您正在提及编辑 bash_profile,但据我所知,Airflow 正在 运行 作为另一个用户。由于其他用户在 bash_profile 中没有任何更改,因此可能缺少 Spark 的路径。

如此处所述 (How do I set an environment variable for airflow to use?),您可以尝试在 .bashrc 中设置路径。