Skicka data mellan uppgifter med XCom

Introduktion till Apache Airflow i Python

Mike Metzger

Data Engineer

Vad är XCom?

  • "Cross Communication"
    • Låter uppgifter kommunicera med varandra
  • Lagras i Airflows metadatadatabas
    • Skicka små datamängder
    • Filnamn, URI, radantal

Illustration av XCom som skickar liten data mellan Airflow-uppgifter

Introduktion till Apache Airflow i Python

Vad bör inte skickas via XCom

  • Stora filer
  • DataFrames
  • Hela databaser
  • Stora bilder

Illustration av datatyper att undvika via XCom, till exempel stora filer och DataFrames

Introduktion till Apache Airflow i Python

Implementera XCom

  • XCom kan användas på många sätt
  • Vi fokuserar på TaskFlow API
  • En utökning av det vi redan gjort med @tasks
Introduktion till Apache Airflow i Python

XCom-exempel

@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()
Introduktion till Apache Airflow i Python

XCom-beroenden

  • XCom definierar automatiskt beroendekedjor
  • Exempel
    clean_data(get_data())
    
  • Konceptuellt samma som get_data() >> clean_data()
  • Ytterligare exempel
     result = clean_data(get_data())
     result >> alert_when_complete()
    
Introduktion till Apache Airflow i Python

Visa XCom-data

Airflows XCom-sida som listar lagrade värden efter nyckel, DAG och uppgift

Introduktion till Apache Airflow i Python

Nu kör vi en övning!

Introduktion till Apache Airflow i Python

Preparing Video For Download...