安排Spark Streaming作业
问题描述:
我有一个Spark Streaming作业,它使用spark-submit脚本手动运行。我想安排它每天运行。安排Spark Streaming作业
哪一个更好Azkaban,Airflow,Oozie,Crontab,Spark-jobserver,Quartz或Luigi。
任何建议表示赞赏!
答
我有机会从此列表中使用Oozie和Airflow。 最初我从Oozie开始,但Oozie对于spark 2.0并不是一个好的选择。我永远无法使用Oozie运行我的Spark2.0作业。 然后,我转移到Airflow,这是快速和易于安装。它配备了足够的例子,可以从基本的工作流程开始。 您可以快速浏览所有这些内容,或等待所有这些人员的工作人员提供一些反馈。 根据您的要求,Airflow足够好。如果您最终确定了Airflow,则可以使用下面的DAG来满足您的要求。
import airflow
from airflow.models import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import timedelta
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2017, 8, 23,22,40),
'end-date': datetime(2017, 9, 20, 22, 40),
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG(
'Spark-Workflow-DAG',
default_args=default_args,
description='Spark workflow',
schedule_interval=timedelta(days=1))
t1 = BashOperator(
task_id='Execute_Spark_Streaming_Job',
bash_command="your complete spark submit command with all the arguments",
dag=dag)
很少有链接对我有帮助。 https://blog.insightdatascience.com/scheduling-spark-jobs-with-airflow-4c66f3144660 https://www.agari.com/automated-model-building-emr-spark-airflow/