[Airflow] 전역변수 Variable 이용하기

2024. 7. 23. 18:14·Minding's Programming/Airflow
728x90
반응형

전역 변수 Variable?

 

Xcom은 특정 DAG 또는 특정 Schedule에 수행되는 task 간에만 공유되는 데이터라면, Variable은 모든 DAG에 공유되는 데이터라고 할 수 있다.

 

Variable은 Airflow Webserver(http://localhost:8080/)에서 등록할 수 있다. Admin 메뉴 하단 'Variables'라는 메뉴에서 등록가능하다. (실제 Variable의 Key, Value 값은 메타 DB의 Variable 테이블에 저장된다.)

 

 

전역 변수 사용하기

 

전역 변수를 사용하는 방법에는 크게 두 가지가 있다.

 

1) Variable 라이브러리를 이용해 가져오기

from airflow.models import Variable

var_value = Variable.get("sample_key")
bash_var_1 = BashOperator(
task_id='bash_var_1',
bash_command=f"echo variable:{var_value}"
)

첫 번째로는 Airflow의 라이브러리를 이용해 파이썬 문법으로 미리 특정 변수에 선언해 가져오는 것이다. 위 코드에서는 var_value라는 변수에 get() 메서드를 이용해 데이터를 가져왔다.

 

2) Jinja 템플릿 이용 오퍼레이터 내부에서 가져오기

bash_var_2 = BashOperator(
task_id ='bash_var_2',
bash_command=f"echo variable: {{var.value.sample_key}}"
)

두 번째는 Jinja 템플릿을 이용하는 방법이다. {{ var.value.{등록한 키값} }}의 형식으로 가져올 수 있다.

 

이 두 방법 중 권고되는 방법은 Jinja 템플릿을 이용하는 두 번째 방법이라고 한다. 스케줄러가 주기적으로 DAG을 파싱하는 경우, Variable.get()의 개수만큼 DB연결을 하기 때문에 불필요한 부하가 발생하기 때문이다. 이는 스케줄러의 과부하로 이어져 서비스 또는 API 등의 제공에 불편을 초래할 수 있다.

 

 

전역변수는 언제 사용할까?

 

전역 변수는 주로 협업 환경에서 표준화된 dag을 만들기 위해 주로 사용된다. 주로 상수(CONST)로 지정해서 사용할 변수들을 세팅하는게 좋다.

 

예시

  • base_sh_dir = /opt/airflow/plugins/shell
  • 주로 반복해서 사용하는 절대경로
  • email, Alert 메시지를 받을 담당자의 email 주소 정보

 

 

728x90

'Minding's Programming > Airflow' 카테고리의 다른 글

[Airflow] Trigger Rule  (0) 2024.07.24
[Airflow] Task 분기 처리 (BranchPythonOperator, @task.branch, BaseBranchOperator)  (2) 2024.07.24
[Airflow/Xcom] Airflow에서 Xcom 사용해보기  (0) 2024.07.23
[Airflow/Macros] Airflow에서 macros(매크로) 사용해보기  (3) 2024.07.23
[Airflow] Airflow의 날짜 개념  (0) 2024.07.23
'Minding's Programming/Airflow' 카테고리의 다른 글
  • [Airflow] Trigger Rule
  • [Airflow] Task 분기 처리 (BranchPythonOperator, @task.branch, BaseBranchOperator)
  • [Airflow/Xcom] Airflow에서 Xcom 사용해보기
  • [Airflow/Macros] Airflow에서 macros(매크로) 사용해보기
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    KBO
    프로그래머스
    야구
    파이썬
    메이저리그
    코딩테스트
    게임개발
    에어플로우
    pygame
    칼만필터는어렵지않아python
    딥러닝
    AWS
    MLB
    FastAPI
    django python
    KalmanFilter
    칼만필터
    파이썬게임개발
    머신러닝
    django
    질롱코리아
    Airflow
    데이터분석
    데이터 엔지니어
    칼만필터는어렵지않아
    넘파이
    파이게임
    칼만필터는어렵지않아파이썬
    mlb stats api
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[Airflow] 전역변수 Variable 이용하기
상단으로

티스토리툴바