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
- correlation
- gather_nd
- flask
- spark udf
- API
- tensorflow text
- requests
- 유튜브 API
- grad-cam
- youtube data
- XAI
- UDF
- Airflow
- chatGPT
- GCP
- airflow subdag
- Retry
- BigQuery
- session 유지
- API Gateway
- GenericGBQException
- subdag
- 상관관계
- hadoop
- login crawling
- 공분산
- TensorFlow
- top_k
- integrated gradient
Archives
- Today
- Total
데이터과학 삼학년
[Airflow] SubDag을 이용하여 MainDag과 스케쥴을 다르게 설정하기!!!!! (feat. ChatGPT) 본문
반응형
airflow로 매일 아침 8시에 실행되는 parentDag이 있고, 그 안에 매달 1일 아침 10시에 실행되는 subDag을 구성하려고 해. 이 코드를 파이썬으로 작성해줄수 있겠어?
라고 ChatGPT에게 시켜보았습니다.
그랬더니...
이런 코드를.
네, airflow에서 매일 아침 8시에 실행되는 parent DAG과 매월 1일 아침 10시에 실행되는 sub DAG을 구성하는 파이썬 코드는 다음과 같습니다.
from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.subdag_operator import SubDagOperator
from airflow.utils.dates import days_ago
from subdag import subdag
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': days_ago(1),
'email_on_failure': False,
'email_on_retry': False,
'retries': 1
}
dag = DAG(
'parentDag',
default_args=default_args,
description='Parent DAG',
schedule_interval='0 8 * * *'
)
start_task = DummyOperator(
task_id='start_task',
dag=dag
)
subdag_task = SubDagOperator(
task_id='subdag_task',
subdag=subdag('parentDag', 'subdag_task', default_args),
dag=dag,
)
end_task = DummyOperator(
task_id='end_task',
dag=dag
)
start_task >> subdag_task >> end_task
이때, subdag은 별도의 파일(subdag.py)로 작성하여 import하여 사용합니다.
from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
def subdag(parent_dag_name, child_dag_name, default_args):
dag_subdag = DAG(
dag_id=f"{parent_dag_name}.{child_dag_name}",
default_args=default_args,
start_date=datetime(2022, 1, 1),
schedule_interval='0 10 1 * *'
)
subdag_start = DummyOperator(
task_id='subdag_start',
dag=dag_subdag
)
subdag_end = DummyOperator(
task_id='subdag_end',
dag=dag_subdag
)
subdag_start >> subdag_end
return dag_subdag
이렇게 구성된 DAG은 매일 아침 8시에 parentDag을 실행하고, 매월 1일 아침 10시에 subDag을 실행하게 됩니다.
그랬더니...
무섭다...
이제 프로그래머도..코딩능력이 없어도 되는 날이 오려나..
ChatGPT로 앱이나 개발해보아야겠다.
728x90
반응형
LIST
'DevOps' 카테고리의 다른 글
[GIT] pre-commit을 이용한 코드 스타일 관리 (0) | 2023.04.21 |
---|---|
[Airflow] task별 개별 적으로 retry, timedelta 설정 (0) | 2023.03.23 |
[Airflow] SubDag 개념, 장단점, 샘플 코드 (feat. ChatGPT) (0) | 2023.03.11 |
[Airflow] Xcom을 이용한 task간 변수 전달 (0) | 2023.01.26 |
[Airflow] Airflow context variable (0) | 2023.01.24 |
Comments