# Instalação mínima
pip install apache-airflow
# Instalação com suporte extra (S3 e PostgreSQL)
pip install "apache-airflow[s3, postgres]"
# Define a pasta em que o airflow vai trabalhar
# Isso é necessário
export AIRFLOW_HOME=~/airflow
# Inicializa o banco de dados (padrão: SQLite)
airflow initdb
# Iniciar o seridor local (porta padrão: 8080)
airflow webserver -p 8080
import airflow
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import, timedelta
args = {
'owner': 'airflow',
'start_date': airflow.utils.dates.days_ago(2)
}
dag = DAG(
dag_id='tutorial',
default_args=args,
schedule_interval=timedelta(days=1),
dagrun_timeout=timedelta(minutes=60)
)
# 1. Imprime a data na saída padrão
task1 = BashOperator(
task_id='print_date',
bash_command='date',
dag=dag)
# 2. Faz uma sleep de 5 segundos.
# Dando errado tente em no máximo 3 vezes
task2 = BashOperator(
task_id='sleep',
bash_command='sleep 5',
retries=3,
dag=dag)
# 3. Salve a data em um arquivo texto
task3 = BashOperator(
task_id='save_date',
bash_command='date > /tmp/date_output.txt',
retries=3,
dag=dag)
# Interligando task1 ao task2
task1.set_downstream(task2)
# Interligando task2 ao task3
task2.set_downstream(task3)
# salve o módulo na pasta dags (definido por padrão)
$ cd $AIRFLOW_HOME/dags
$ vim tutorial_dag.py
# Executando em linha de comando
# mas pode executar via interface também
$ airflow backfill tutorial -s 2018-03-30 -e 2015-03-30
Data warehousing: cleanse, organize, data quality check
Growth analytics
Experimentation: compute our A/B testing
Email targeting
Sessionization: compute clickstream
Search: compute search ranking related metrics
Data infrastructure maintenance: database scrapes, folder cleanup, applying data retention policies, …
feitos pelo Airbnb
Documentação Airflow
Awesome Apache Airflow
Apache Airflow in the Cloud: Programmatically orchestrating workloads
Automatizando seu fluxo de trabalho com Airflow
http://gilsondev.in/airflow/dados/2018/06/23/automatizando-fluxo-de-trabalho-com-airflow/
Usando o Airflow no Heroku
http://gilsondev.in/airflow/dados/2018/12/24/usando-o-airflow-no-heroku/
Blog: df.python.org.br
Telegram: @grupydf
Meetup: PyData-Brasilia
Telegram: @pydatabsb
Email: me@gilsondev.in
Blog: gilsondev.in
Telegram: @gilsondev
Github: @gilsondev
Twitter: @gilsonfilho