now is better than never

[airflow] 전역변수 Variable 본문

데이터 엔지니어링/airflow

[airflow] 전역변수 Variable

김초송 2023. 7. 8. 16:22

Variable

  • XCom: 특정 DAG / schedule 에서 수행되는 TASK 간에만 공유
    (같은 DAG 이라도 어제와 오늘 TASK 간 데이터는 공유 X)
  • Variable
    • 모든 DAG 이 공유
    • airflow 사이트에서 등록 가능
    • Admin > variables
    • Variable의 key, value 값은 메타 DB의 variable 테이블에 저장됨

전역변수 사용

  1. Variable 라이브러리 + 파이썬 문법
    *from airflow.models import Variable
    *
    → 주기적인 DAG 파싱 시 Variable.get 개수만큼 DB(메타DB variable 테이블) 연결 → 불필요한 부하 발생
  2. Jinja template + 오퍼레이터 내부 (권고)
    {{var.value.}}
  • 협업 환경에서 표준화된 DAG 만들기 위해 사용
  • 주로 상수(CONST)로 지정해서 사용할 변수 세팅
  • ex) base_sh_dir = /opt/airflow/plugins/shell
          base_file_dir = /opt/airflow/plugins/files
          담당자 email 주소
# Variable library
var_value = Variable.get("sample_key")

bash_var_1 = BashOperator(
    task_id='bash_var_1',
    bash_command=f'echo variable: {var_value}'
)

# Jinja Template
bash_var_2 = BashOperator(
    task_id='bash_var_2',
    bash_command='echo variable: {{var.value.sample_key}}'
)

'데이터 엔지니어링 > airflow' 카테고리의 다른 글

[airflow] TASK 분기 (2) - Task.branch  (0) 2023.09.06
[airflow] TASK 분기 (1) - Branch Python Operator  (0) 2023.09.05
[airflow] XCom  (1) 2023.07.06
[airflow] Macro  (0) 2023.06.23
[airflow] Jinja template  (0) 2023.06.23