ݺߣ

ݺߣShare a Scribd company logo
Александр Шорин
a.shorin@rambler-co.ru
Декларативные даги
в Apache Airflow
• Система управления и выполнения графа задач
• Разработана AirBnB, в 2016 году передана в Apache
Software Foundation
• Написан на Python
• Используется в AirBnB, Spotify, Yahoo!, Rambler&Co,
Qiwi, Quora и сотни других компаний
Коротко про Airflow
• DAG - направленный ациклический граф
• Сенсор - задача, которая чего-то ждет
• Оператор - задача, которая делает вещи
• И всё это на Python!
Основные концепции Airflow
args = {
'owner': 'airflow',
'start_date': airflow.utils.dates.days_ago(2)
}
dag = DAG(
dag_id='example_bash_operator', default_args=args,
schedule_interval='0 0 * * *',
dagrun_timeout=timedelta(minutes=60))
cmd = 'ls -l'
run_this_last = DummyOperator(task_id='run_this_last', dag=dag)
run_this = BashOperator(
task_id='run_after_loop', bash_command='echo 1', dag=dag)
run_this.set_downstream(run_this_last)
for i in range(3):
i = str(i)
task = BashOperator(
task_id='runme_'+ i,
bash_command='echo "{{ task_instance_key_str }}" && sleep 1',
dag=dag)
task.set_downstream(run_this)
task = BashOperator(
task_id='also_run_this',
bash_command='echo "run_id={{ run_id }} | dag_run={{ dag_run }}"',
dag=dag)
task.set_downstream(run_this_last)
Эволюция программиста
dags:
moscow_spark:
args:
start_date: 2017-07-27
schedule_interval: 90d
operators:
run_meetup:
class: rambler.meetups:MoscowSparkMeetup
args:
venue: mansandra
sensors:
await_folks:
callback: rambler.reception:await_folks
callback_args:
amount: 300
await_speakers:
callback: rambler.reception:await_speakers
amount: 4
flow:
await_folks:
- run_meetup
await_speakers:
- run_meetup
• Упрощает понимание и разработку
• Не дает возможность погромировать
• Отделяет бизнес логику от метода ее запуска
• Статический анализ? Легко!
• Абстракция от Airflow позволяет разрабатывать
альтернативные компоненты (scheduler, workers, etc.)
Что это дает?
$ git clone
git@github.com:rambler-digital-solutions/airflow-declarative.git
$ pip install airflow-declarative
Airflow Declarative
Ждем ваших патчей!
Спасибо за внимание!

More Related Content

Декларативные даги в Apache Airflow

  • 2. • Система управления и выполнения графа задач • Разработана AirBnB, в 2016 году передана в Apache Software Foundation • Написан на Python • Используется в AirBnB, Spotify, Yahoo!, Rambler&Co, Qiwi, Quora и сотни других компаний Коротко про Airflow
  • 3. • DAG - направленный ациклический граф • Сенсор - задача, которая чего-то ждет • Оператор - задача, которая делает вещи • И всё это на Python! Основные концепции Airflow
  • 4. args = { 'owner': 'airflow', 'start_date': airflow.utils.dates.days_ago(2) } dag = DAG( dag_id='example_bash_operator', default_args=args, schedule_interval='0 0 * * *', dagrun_timeout=timedelta(minutes=60)) cmd = 'ls -l' run_this_last = DummyOperator(task_id='run_this_last', dag=dag) run_this = BashOperator( task_id='run_after_loop', bash_command='echo 1', dag=dag) run_this.set_downstream(run_this_last) for i in range(3): i = str(i) task = BashOperator( task_id='runme_'+ i, bash_command='echo "{{ task_instance_key_str }}" && sleep 1', dag=dag) task.set_downstream(run_this) task = BashOperator( task_id='also_run_this', bash_command='echo "run_id={{ run_id }} | dag_run={{ dag_run }}"', dag=dag) task.set_downstream(run_this_last)
  • 6. dags: moscow_spark: args: start_date: 2017-07-27 schedule_interval: 90d operators: run_meetup: class: rambler.meetups:MoscowSparkMeetup args: venue: mansandra sensors: await_folks: callback: rambler.reception:await_folks callback_args: amount: 300 await_speakers: callback: rambler.reception:await_speakers amount: 4 flow: await_folks: - run_meetup await_speakers: - run_meetup
  • 7. • Упрощает понимание и разработку • Не дает возможность погромировать • Отделяет бизнес логику от метода ее запуска • Статический анализ? Легко! • Абстракция от Airflow позволяет разрабатывать альтернативные компоненты (scheduler, workers, etc.) Что это дает?
  • 8. $ git clone git@github.com:rambler-digital-solutions/airflow-declarative.git $ pip install airflow-declarative Airflow Declarative