Apache spark 通过气流调度Kubernetes上运行的Spark作业

Apache spark 通过气流调度Kubernetes上运行的Spark作业,apache-spark,kubernetes,airflow,Apache Spark,Kubernetes,Airflow,我有一个通过Kubernetes吊舱运行的spark任务。到目前为止,我一直在使用Yaml文件手动运行我的作业。 现在,我想通过气流来安排我的火花作业。 这是我第一次使用气流,我不知道如何在气流中添加Yaml文件。 从我所读到的是,我可以通过气流中的DAG来安排我的工作。 dag示例如下: from airflow.operators import PythonOperator from airflow.models import DAG from datetime import datetim

我有一个通过Kubernetes吊舱运行的spark任务。到目前为止,我一直在使用Yaml文件手动运行我的作业。 现在,我想通过气流来安排我的火花作业。 这是我第一次使用气流,我不知道如何在气流中添加Yaml文件。 从我所读到的是,我可以通过气流中的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
在这种情况下,一旦我玩了DAG,上述方法将在另一个之后执行。 现在,如果我想运行spark提交作业,我应该怎么做? 我使用的是Spark 2.4.4

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

  • ,它将为您执行给定的bash脚本。您可以直接使用它运行
    kubectl
    spark submit
  • ,要调用的特定操作员
    spark submit
  • ,为您创建Kubernetes吊舱,您可以直接使用它启动驱动吊舱
  • 混合解决方案,例如+,您在Kubernetes上启动Livy服务器,它充当Spark作业服务器,并提供RESTAPI供HttpOperator调用
注意:对于每个操作员,您需要确保您的Airflow环境包含执行所需的所有依赖项以及配置为访问所需服务的凭据

您还可以参考现有线程: