无法使用Airflow创建我的pyspark脚本的cron作业

时间:2019-04-08 14:15:49

标签: apache-spark airflow airflow-scheduler

我有一个pyspark脚本,该脚本现在可以很好地运行,我想做的是每分钟都计划该工作,并且我正在使用Apache Airflow,因此我为气流创建了一个.py文件,正在关注:

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
import os
from builtins import range
import airflow
from airflow.models import DAG
from airflow.operators.dummy_operator import DummyOperator

srcDir = os.getcwd() + '/home/user/testing.py'
sparkSubmit = '/home/usr/spark-2.4.0-bin-hadoop2.7/bin/spark-submit'

default_args = {
    "owner": "usr",
    "depends_on_past": False,
    "start_date": datetime(2019, 4, 8),
    "email": ["abc@gmail.com"],
    "email_on_failure": True,
    "email_on_retry": True,
    'retries': 5,
    'retry_delay': timedelta(minutes=1),
}

dag= DAG('my_airflow',default_args=default_args, schedule_interval='* * * * *')

t1 = BashOperator(
    task_id='task1',
    bash_command='/home/user/spark-2.4.0-bin-hadoop2.7/bin/spark-submit' + ' ' + srcDir, 
    dag=dag,
)

但是当我由python3 air_flow.py运行时,它既不在控制台上也不在Airflow UI上什么都没有显示。 我想知道如何让Apache Airflow在每分钟安排我的pyspark脚本吗? 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

运行python3 air_flow.py只是解析您的文件。

要按计划运行文件,首先需要启动Airflow Webserver和Airflow Scheduler。

# initialize the database
airflow initdb

# start the web server, default port is 8080
airflow webserver -p 8080

# start the scheduler
airflow scheduler

然后在浏览器上,访问http://localhost:8080,它将把您重定向到如下所示的Airflow Webserver UI:

Airflow DAG Page

您的脚本将每分钟自动运行一次。如果要从UI手动触发它,请单击DAG右侧的“运行”按钮。

遵循快速入门指南:https://airflow.readthedocs.io/en/1.10.2/start.html