๐ Airflow ์คํ๋ ์ง
์คํ ๋ ์ง๋ batch job ์ ํน์ฑ์ ๊ฐ์ง Airflow์์ ๋งค์ฐ ์ค์ํ๋ค.
Airflow์์ start_date ๋ ์คํ ์์ ๋ ์ง๊ฐ ์๋๋ผ ์ค์ผ์ค์ด ์์๋๋ ๋ ์ง๋ผ๋ ๊ฒ์ ๊ธฐ์ตํด์ผํ๋ค.
์๋ฅผ ๋ค์ด์ ์ค๋ ๋ ์ง๊ฐ datetime(2022, 5, 14) ์ด๋ค.
ํ์ง๋ง Airflow์ start_date๋ฅผ (2022, 1, 1) ๋ก ์ ๊ฒ๋๋ฉด 1์ 1์ผ ๋ถํฐ 5์ 13์ผ๊น์ง์ job์ด ์๊ธฐ๊ฒ ๋๋ค.
์ด์ฒ๋ผ Airflow์์ start_date๋ ์คํ ์์์ด ์๋ ์ค์ผ์ค์ ์ฌ๋ผ๊ฐ๋ ๋ ์ง๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ์
๐ catchup
์์ ๊ฐ์ด ๊ณผ๊ฑฐ ๋ ์ง๋ก start_date ๋ฅผ ์ค์ ํ๋ฉด Airflow๋ ๊ณผ๊ฑฐ์ Task๋ฅผ ์ฐจ๋ก๋๋ก ์คํํ๋ Backfill์ ์คํํ๊ฒ ๋๋ค.
ํ์ง๋ง ๋ณดํต ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก DAG๋ฅผ ์ ์ธํ ๋ catchup=False ์ต์ ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๊ธฐ๋ณธ ์ค์ ์ catchup=True์ด๋ค.
DAG(
default_args=default_args,
start_date=datetime(2022,1,1, tzinfo=seoul_time),
schedule_interval='@daily',
tags=['test'],
catchup=False
)
๐ ์๋์คํ ๋ฐฉ์ง
์์ ๊ฐ์ด ์ค์ ํ๊ณ DAG ์ ๋ก๋ ํ Airflow DAG๋ฅผ ํค๋ฉด ์ํ๋ ์๊ฐ์ด ์๋๋ฐ ์คํ์ด ๋๋ค. ์ ์์์์ datetime(2022, 1, 1) ๋ก๋ง ์ค์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. Airflow๋ ์คํํ๊ธฐ ์ํด์ ์ผ๋จ ์ค์ผ์ค์ ๋ฏธ๋ฆฌ ๋ฑ๋ก์ด ๋์ด์ผ ํ๋ค. ๋ฌด์จ๋ง์ด๋ ํ๋ฉด start_date๊ฐ ํ์ฌ ์๊ฐ ๋ณด๋ค ์ด์ ์ผ๋ก ๋ฑ๋ก์ด ๋์ด ์์ด์ผ ํ๋ ๊ฒ์ด๋ค. ์๋ ์์๋ Backfill์ด ํ์ ์๋ค๊ณ ๊ฐ์ ํ ๊ฒฝ์ฐ์ด๋ค.
์๋ฅผ ๋ค์ด์
- ์ด๋ฏธ ์ค๋ ์ ํด์ง ์๊ฐ์ด ์ง๋ ํ ์ ๋ก๋ ํ dag์ ๋ํด์๋ datetime์ ์ค๋ ๋ ์ง๋ก ํด์ผํจ
ex) ๋งค์ผ ์คํ 1์์ ์คํํ๋ dag์ธ๋ฐ ์คํ 2์์ ์ ๋ก๋ ์
- ์ ํด์ง ์๊ฐ์ด ์
๋ก๋ ํ๋ ์๊ฐ๋ณด๋ค ๋์ค์ธ dag์ ๋ํด์๋ ์ด์ ๋ ์ง๋ก ํด์ผํจ
ex) ๋งค์ผ ์คํ 1์์ ์คํํ๋ dag์ธ๋ฐ ์คํ 12์์ ์
๋ก๋ ์
- ์ ํด์ง ์๊ฐ์ด 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ: ์
๋ก๋ ํ๋ ์๊ฐ๋ณด๋ค ์ ์ ์คํ๋์ด์ผ ํ๋ ๊ฒ๊ณผ ํ์ ์คํ๋์ด์ผ ํ๋ ๊ฒ์ด ์์ฌ์์ ๊ฒฝ์ฐ ์ค๋ ๋ ์ง๋ก ex) ์คํ1์, ์คํ3์์ ์คํํ๋ dag์ธ๋ฐ ์คํ 2์์ ์
๋ก๋ ์
์ฆ ์ผ๋ฐฐ์น๋ฉด ํ๋ฃจ ์ ๊ธฐ์ค์ผ๋ก ๋๊ณ ,
์๊ฐ ๋ฐฐ์น๋ฉด ์ด์ ์๊ฐ ๊ธฐ์ค์ผ๋ก ๋๊ณ ,
๋ถ ๋ฐฐ์น๋ฉด ์ด์ ๋ถ ๊ธฐ์ค์ผ๋ก ๋๋ค.
'Airflow' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Airflow] Branch๋ฅผ ์ด์ฉํด ์ํฉ์ ๋ง๋ task ์คํ(BranchPythonOperator) | LIM (0) | 2022.07.19 |
---|---|
[Airflow] Airflow Connection with Google Secret Manager | LIM (0) | 2022.06.16 |
[Airflow] CustomOperator ์์ฑ | LIM (0) | 2022.06.12 |
Mac Airflow local ์ค์น (0) | 2022.05.14 |
[Airflow] Airflow ๊ธฐ๋ณธ ๊ฐ๋ (2) | 2021.08.14 |
๋๊ธ