Passando dados entre tasks com XCom

Introdução ao Apache Airflow em Python

Mike Metzger

Data Engineer

O que é XCom?

  • "Cross Communication"
    • Permite que tasks conversem entre si
  • Armazenado no banco de metadados do Airflow
    • Passa pequenas quantidades de dados
    • Nomes de arquivo, URI, contagem de linhas

Ilustração do XCom passando pequenos dados entre tasks do Airflow

Introdução ao Apache Airflow em Python

O que não enviar via XCom

  • Arquivos grandes
  • DataFrames
  • Bancos de dados inteiros
  • Imagens grandes

Ilustração de tipos de dados a evitar no XCom, como arquivos grandes e DataFrames

Introdução ao Apache Airflow em Python

Implementando XCom

  • Várias formas de usar XCom
  • Vamos focar na TaskFlow API
  • Extensão do que já fizemos com @tasks
Introdução ao Apache Airflow em Python

Exemplo de 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()
Introdução ao Apache Airflow em Python

Dependências com XCom

  • XComs definem a ordem de dependência automaticamente
  • Exemplo
    clean_data(get_data())
    
  • Conceitualmente igual a get_data() >> clean_data()
  • Outro exemplo
     result = clean_data(get_data())
     result >> alert_when_complete()
    
Introdução ao Apache Airflow em Python

Vendo dados do XCom

Página do Airflow XCom listando valores salvos por chave, DAG e task

Introdução ao Apache Airflow em Python

Vamos praticar!

Introdução ao Apache Airflow em Python

Preparing Video For Download...