Передавання даних між завданнями за допомогою XCom

Вступ до Apache Airflow на Python

Mike Metzger

Data Engineer

Що таке XCom?

  • «Cross Communication»
    • Дозволяє завданням обмінюватися даними
  • Зберігається в базі метаданих Airflow
    • Передавайте невеликі обсяги даних
    • Імена файлів, URI, кількість рядків

Ілюстрація XCom, що передає невеликі дані між завданнями Airflow

Вступ до Apache Airflow на Python

Що не слід надсилати через XCom

  • Великі файли
  • DataFrameʼи
  • Повні бази даних
  • Великі зображення

Ілюстрація типів даних, які не слід надсилати через XCom, як-от великі файли та DataFrameʼи

Вступ до Apache Airflow на Python

Реалізація XCom

  • Є багато способів використати XCom
  • Зосередимося на TaskFlow API
  • Розширення того, що вже робили з @tasks
Вступ до Apache Airflow на Python

Приклад XCom

@dag(dag_id='Example_XCom')
def example_xcom():

@task def get_data(): return data
@task(multiple_outputs=True) def clean_data(sourcedata): return clean(sourcedata) # Example, not implemented
clean_data(get_data()) example_xcom()
Вступ до Apache Airflow на Python

Залежності XCom

  • XCom автоматично визначають порядок залежностей
  • Приклад
    clean_data(get_data())
    
  • Концептуально те саме, що get_data() >> clean_data()
  • Ще приклад
     result = clean_data(get_data())
     result >> alert_when_complete()
    
Вступ до Apache Airflow на Python

Перегляд даних XCom

Сторінка Airflow XCom зі списком збережених значень за ключем, DAG і завданням

Вступ до Apache Airflow на Python

Давайте потренуємось!

Вступ до Apache Airflow на Python

Preparing Video For Download...