通过 Airflow 调度在 Kubernetes 上运行的 Spark 作业

sov*_*van 4 apache-spark kubernetes airflow

我有一个通过 Kubernetes pod 运行的 spark 作业。到目前为止,我一直在使用 Yaml 文件手动运行我的作业。现在,我想通过气流安排我的火花作业。这是我第一次使用气流,我无法弄清楚如何在气流中添加我的 Yaml 文件。据我所知,我可以通过 Airflow 中的 DAG 安排我的工作。一个 dag 示例是这样的:

from airflow.operators import PythonOperator
from airflow.models import DAG
from datetime import datetime, timedelta

args = {'owner':'test', 'start_date' : datetime(2019, 4, 3), 'retries': 2, 'retry_delay': timedelta(minutes=1) }
dag = DAG('test_dag', default_args = args, catchup=False)

def print_text1():
    print("hell-world1")

def print_text():
    print('Hello-World2')

t1 = PythonOperator(task_id='multitask1', python_callable=print_text1, dag=dag)
t2 = PythonOperator(task_id='multitask2', python_callable=print_text, dag=dag)
t1 >> t2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,一旦我播放 DAG,上述方法将依次执行。现在,如果我想运行 spark 提交作业,我该怎么办?我正在使用 Spark 2.4.4

Ali*_*ikh 5

Airflow 有一个operators的概念,它代表 Airflow 任务。在您的示例中使用了PythonOperator,它只是执行 Python 代码,并且很可能不是您感兴趣的代码,除非您在 Python 代码中提交 Spark 作业。您可以使用多种运算符:

注意:对于每个操作符,您需要确保您的 Airflow 环境包含执行所需的所有依赖项以及配置为访问所需服务的凭据。

您也可以参考现有线程: