Airflow - BashOperator

BAO.DE·2025년 3월 13일

Apache Airflow

목록 보기
7/20

BashOperator

용어정리

  • operator : 특정 기능들의 모음 클래스 (설계도)
  • task : Dag에서 실행가능한 오브젝트
    - task들은 방향성을 가지고 비순환 참조
  • BashOperator : 쉘 명령어 실행 가능한 operator
    이외에 다양한 operator 존재

DAG 간단버전

from airflow import DAG
from airflow.operators.bash import BashOperator
import datetime
import pendulum 

with DAG (
    dag_id ="dags_bash_operator",
    schedule ="0 0 * * *" , ##cron
    start_date = pendulum.datetime(2025,1,1,tz="Asia/Seoul"),
    catchup = False, ## 누락된 구간 x 소급적용 x
)as dag: ## 실행할 bash 명령어
    bash_t1 = BashOperator(
        task_id = "bash_t1",
        bash_command="echo whoami"
    )
    bash_t2 = BashOperator(
        task_id = "bash_t2",
        bash_command="echo $HOSTNAME"
    )

bash_t1 >> bash_t2

DAG 기본 경로 설정

airflow webserver 반영 하기 위해 dag 경로 수정
-> docker-compose.yaml 파일 내

volumes:
- ${AIRFLOW_PROJ_DIR:-.}/Airflow/dags:/opt/airflow/dags
프로젝트 내 dags 폴더 경로 지정

docker container 재실행 후 웹서버 접속하면 만들어놓은 dag가 보인다

DAG 수행

dag에서 작성한 task 순서대로 차례로 queueing - running 된다.

ehco $HOSTNAME 에서 나오는 컨테이너 ID는 Airflow-worker의 컨테이너 ID이다 .
즉 task를 실제 처리하는 컨테이너는 worker이다

0개의 댓글