[Airflow] XCom 기초 설명

2sky·2024년 6월 23일

AirFlow

목록 보기
3/8

기본 개념

Apache Airflow에서 XCom (Cross-Communication)은 서로 다른 태스크들 간에 메시지나 작은 데이터를 공유하는 메커니즘. XCom은 DAG 내의 태스크들이 서로 통신하고 데이터를 교환할 수 있도록 도와준다.

XCom의 주요 기능

  1. Push: 한 태스크가 특정 값을 XCom에 저장할 수 있습니다. 이를 XCom을 "푸시"함. 예를 들어, 태스크 A가 수행한 결과를 XCom에 저장할 수 있음.

    python코드 복사
    from airflow import DAG
    from airflow.operators.python import PythonOperator
    from datetime import datetime
    
    def push_function(ti):
        ti.xcom_push(key='my_key', value='my_value')
    
    dag = DAG('example_xcom', start_date=datetime(2023, 1, 1))
    
    push_task = PythonOperator(
        task_id='push_task',
        python_callable=push_function,
        dag=dag
    )
    
  2. Pull: 다른 태스크가 XCom에서 값을 읽어올 수 있음. 이를 XCom을 "풀". 예를 들어, 태스크 B가 태스크 A가 저장한 값을 읽어올 수 있음.

    python코드 복사
    def pull_function(ti):
        value = ti.xcom_pull(key='my_key', task_ids='push_task')
        print(f'The value is: {value}')
    
    pull_task = PythonOperator(
        task_id='pull_task',
        python_callable=pull_function,
        dag=dag
    )
    
    push_task >> pull_task
    
  3. Key-Value Store: XCom은 key-value 형태로 데이터를 저장. 각각의 데이터는 특정 key를 가지고 있으며, 이를 통해 데이터를 식별하고 접근할 수 있다.

  4. Task Instances: XCom은 특정 task instance에 연결되어 있습니다. 따라서 동일한 DAG 내의 여러 실행에서 독립적으로 작동.

  5. XCom을 사용할 때는 너무 큰 데이터를 저장하지 않도록 주의해야 하고, XCom은 작은 크기의 데이터 교환에 적합하며, 큰 데이터는 외부 저장소를 사용하여 공유하는 것이 좋다고 한다.

함수에서 return값이 저장되거나 설정한 값이 저장된다. 위에 코드에서도 볼 수 있듯이. 데이터 프레임으로 Push한 것을, 다음 테스크에서 Pull한 것을 볼 수 있다.

profile
하늘하늘한 하늘

0개의 댓글