250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Counterfactual Explanations
- requests
- spark udf
- gather_nd
- GCP
- integrated gradient
- top_k
- correlation
- tensorflow text
- 상관관계
- youtube data
- login crawling
- chatGPT
- BigQuery
- UDF
- airflow subdag
- Airflow
- API Gateway
- 유튜브 API
- grad-cam
- GenericGBQException
- 공분산
- hadoop
- flask
- subdag
- XAI
- TensorFlow
- API
- Retry
- session 유지
Archives
- Today
- Total
데이터과학 삼학년
[Airflow] SubDag 개념, 장단점, 샘플 코드 (feat. ChatGPT) 본문
반응형
SubDag
- SubDag는 Airflow DAG 안에 존재하는 작은 DAG
- 이를 사용하면 하나의 큰 DAG를 여러 작은 DAG로 분리 가능
- 이렇게 작은 DAG로 분리함으로써, 개발, 테스트 및 유지보수가 더 쉬움
- 또한, SubDag는 DAG를 이해하기 쉬운 작은 단위로 나눌 수 있으며, 작은 단위별로 추적할 수 있어 일부 작업이 실패한 경우 재시작 가능
- SubDag는 DAG 생성 시 하위 레벨의 DagBag에 의해 생성
- 하위 레벨의 DAG는 SubDagOperator를 사용하여 DAG 내에서 호출
SubDag의 장단점
장점
- 큰 DAG를 여러 작은 DAG로 분리할 수 있으므로 개발, 테스트 및 유지보수가 더 쉬워집니다.
- 작은 DAG로 나누어짐으로써 DAG를 이해하기 쉬운 작은 단위로 나눌 수 있습니다.
- 작은 단위별로 추적할 수 있어 일부 작업이 실패한 경우 재시작할 수 있습니다.
단점
- SubDag가 많아지면 DAG 템플릿의 복잡성이 증가합니다.
샘플 코드
아래는 SubDag를 사용한 예제 코드입니다.
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.operators.subdag_operator import SubDagOperator
from subdags.my_subdag import subdag
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2022, 3, 12),
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG(
dag_id='my_dag',
default_args=default_args,
schedule_interval=timedelta(days=1),
)
def print_hello():
return 'Hello!'
def print_world():
return 'World!'
with dag:
hello_task = PythonOperator(
task_id='hello_task',
python_callable=print_hello,
)
world_task = PythonOperator(
task_id='world_task',
python_callable=print_world,
)
with SubDagOperator(
task_id='subdag_task',
subdag=subdag('my_dag', 'subdag_task', default_args),
dag=dag,
) as subdag_task:
sub_task_1 = PythonOperator(
task_id='sub_task_1',
python_callable=print_hello,
dag=subdag_task,
)
sub_task_2 = PythonOperator(
task_id='sub_task_2',
python_callable=print_world
728x90
반응형
LIST
'DevOps' 카테고리의 다른 글
[Airflow] task별 개별 적으로 retry, timedelta 설정 (0) | 2023.03.23 |
---|---|
[Airflow] SubDag을 이용하여 MainDag과 스케쥴을 다르게 설정하기!!!!! (feat. ChatGPT) (0) | 2023.03.13 |
[Airflow] Xcom을 이용한 task간 변수 전달 (0) | 2023.01.26 |
[Airflow] Airflow context variable (0) | 2023.01.24 |
[GIT] LFS (Large File System) (0) | 2022.12.02 |
Comments