Airflow XCom

2022. 11. 30. 01:59Book/Apache Airflow 기반의 데이터 파이프라인

728x90
반응형

XCOM

Xcom은 DAG 내의 task 사이에서 데이터를 전달하기 위해서 사용되는데, Xcom은 DAG내에서만 공유할 수 있는 변수라는 점이다. Xcom을 이용해 데이터를 전달하는 경우 DataFrame이나 많은 양의 데이터를 전달하는 것은 지원하지 않으며, 소량의 데이터만 전달하는 것을 권장한다.

ti = task_instance 로 축약 가능

XCOM 사용 방법

  • PythonOperator return 값을 이용한 Xcom 사용
  • push-pull을 이용한 Xcom 사용
  • Jinja templates을 이용한 Xcom 사용
def _player_data_write(**context):
    headers = {'Authorization' : '='} 
    player_url = "<https://static.api.nexon.co.kr/fifaonline4/latest/spid.json>"
    data = requests.get(player_url, headers=headers)
    player = data.json()
    player_data =[]
    season_class = context['ti'].xcom_pull(task_ids='season_class_crolling')
    for p in player:
        player_data.append({'spid' : p["id"], 'name' : p["name"], 'season_class_name' : season_class[str(int(p["id"])//1000000)]}) 	

    return player_data

player_data_write = PythonOperator(
    task_id="player_data_write", 
    python_callable=_player_data_write, 
    dag=dag
)

 

728x90
반응형

'Book > Apache Airflow 기반의 데이터 파이프라인' 카테고리의 다른 글

Airflow 의존성  (0) 2022.11.30
Airflow 기본적인 Operator  (0) 2022.11.14
Airflow 스케줄링  (0) 2022.11.14
Airflow 시작  (0) 2022.09.03
Airflow 소개  (0) 2022.09.02