게시글
질문&답변
2024.11.19
스케줄링, dag removed원인 질문입니다.
안녕하세요 백미정님!질문주신 내용의 dag 을 모두 첨부해주실 수 있나요?dag 내용을 봐야 자세히 답변이 가능할 것 같습니다. 그리고 질문 내용 중 궁금한게 있습니다. 첫 번째 질문은 당일 날짜를 11월 17일이라 했을 때, 11월 1일부터 17일까지 일괄 수행하고, 18일부터는 스케줄이 도달함에 따라 돌게끔 하고 싶은거지요?
- 0
- 2
- 43
질문&답변
2024.10.15
airflow No host supplied 에러
안녕하세요 Min님주로 저런 증상인 Job 자체가 시작되지 못할 때 로그조차 남기지 못한 현상입니다. 왜 Job 이 시작조차 못했는지는 여러 방법으로 원인을 찾으셔야 해요. 일단 현상은 worker 상태가 정상이 아닌 것 같습니다. 혹시 sudo docker compose up 했을 때 나오는 여러 메시지 중 ERROR 라고 나오는 메시지 없나요?그리고 sudo docker ps 했을 때 컨테이너들의 상태 확인 한번 해주세요. 아래처럼 Healthy로 나와야 합니다. (사진)
- 0
- 2
- 93
질문&답변
2024.10.14
Label 설정 질문드립니다.
안녕하세요 cluelin 님!음.. 내용이 다른 Label을 적용할 때 한 줄로 쉽게 쓰는걸 원하시는거죠?아쉽게도 그런 방법은 없는 것 같습니다. cluelin님께서 쓰신대로 각각 쓰셔야 할 듯 합니다. t1 >> Label('description1') >> t2t1 >> Label('description2') >> t3비슷한 코드를 여러 줄 작성해야 하기에 좀 불편할 수 있지만 유지보수를 생각하자면 보기 편한대로 작성하는 것도 나쁘지는 않습니다 ^^
- 0
- 1
- 37
질문&답변
2024.10.11
Bash Operator & 외부 쉘파일 수행하기 강의 질문
안녕하세요 clulin 님!Base operator를 사용할 때 bash_command 파라미터의 값이 .sh 로 끝나는 경우 스크립트 자체를 Jinja 템플릿으로 해석하려고 시도합니다. 그런데 조건이 있습니다. 쉘 파일을 dags 디렉토리 아래에 두어야 한다는 조건이 있습니다. dags 아래 여러 디렉토리를 계층으로 두더라도 꼭 dags 디렉토리 아래에 쉘 파일이 있어야 인식이 가능합니다. 에러를 안나게 하는 방법은 2가지인데, 1) 쉘 파일을 dags 디렉토리 아래에 두고, bash_command 파라미터를 dags 아래 상대 경로로 작성해주세요. 예를 들어 dags/shells/select.sh 이렇게 두었다면 bash_command를 아래처럼 작성해보세요.bash_command=shells/select.sh이 방법은 select.sh 파일 안에 {{ data_inverval_end }} 와 같이 Template 변수가 작성되어 있을 때 적용할 수 있습니다. 2) bash_command 파라미터 작성시 띄어쓰기를 하나 포함해주는 방법이 있습니다.그럼 .sh 로 끝나지 않고 띄어쓰기가 하나 있으므로 Jinja 템플릿으로 해석하려는 시도를 하지 않습니다.쉘 파일 안에 Template 변수가 없고 단순히 그냥 실행만 하고자 하면 이 방법을 사용하면 됩니다. 이에 대한 설명은 Airflow 가이드 문서 참고해보세요 ^^(사진) https://airflow.apache.org/docs/apache-airflow/stable/howto/operator/bash.html#jinja-template-not-found 답변이 되었을까요?궁금한건 언제든 물어보세요 ^^
- 0
- 2
- 48
질문&답변
2024.10.10
relativedelta 실행 결과 문의
안녕하세요 Byung-ryul kim 님 네 s 붙은것과 안붙은거 모두 가능합니다. months & monthdays & day hours & hourminutes & minute 등등 s가 붙은건 상대적 연산(더하거나 뺄 때), s가 붙지 않은 건 값을 치환해버리는 것으로 원리는 year ~ second 까지 동일합니다.또 궁금하신건 언제든 문의주세요 ^^화이팅입니다!
- 0
- 2
- 39
질문&답변
2024.10.07
DAG 스케줄
안녕하세요 가보자고님!Airflow DAG이 처음 parsing되어 올라올 때나 pause 후 unpause했을 때 Airflow는 마지막으로 돌았어어야 할 run을 수행합니다. 아래 그림을 보시면 pause --> unpause 했을 때 마지막으로 수행되었어야 할 RUN은 빨간색으로 표시한 RUN3 입니다. (사진) 다시 가보자고님의 상황을 보면 6시 1분에 DAG을 재개한 것 같은데, 그러면 가장 마지막으로 수행되었어야 할 RUN은5시 3분에 수행되었어야 할 job입니다.그 Job의 data_interval_start 는 4시 3분입니다. 그래서 두 번째 캡처하신 그림에서 RUN ID가 scheduled__2024-10-06T04:03:00+00:00으로 표시된 겁니다.(RUN ID는 시간 부분을 data_interval_start 값으로 표현합니다) 그리고 2분이 지나 6시 3분이 되자 본 스케줄이 작동한 것이고 이 RUN의 data_interval_start의 시간은 5시 3분이 됩니다. 그래서 마지막 캡처하신 그림의 RUN ID가 scheduled__2024-10-06T05:03:00+00:00으로 표시된 겁니다. 제가 그린 그림에서 RUN4에 해당하는 스케줄이 동작한 겁니다. 이해되셨는지요?
- 0
- 3
- 55
질문&답변
2024.10.07
Next dagrun 문의드립니다
안녕하세요 가보자고님!Airflow는 날짜를 항상 data_interval_start 기준으로 표현합니다.우선 캡처해주신 그림에서 왜 Next Dagrun이 왜 10월 6일 10시 3분(UTC)으로 나왔는지 살펴보죠.아마도 해당 DAG은 UTC 10시 3분에 돌았을 겁니다. 그럼 다음 실행 시각은 UTC 11시 3분이겠죠? 여기까지는 가보자고 님이 생각한 것과 같습니다. 그런데 Airflow는 항상 data_interval_start 기준으로 표현하므로,UTC 11시 3분에 수행되어야 할 Job의 data_interval_start 는 10시 3분입니다.그래서 Next Dagrun의 시간이 10시 3분으로 나온겁니다. 즉 Next Dagrun = Next Dagrun data interval start 입니다. 그리고 Next Dagrun Create After 의 의미는 해당 스케줄이 언제부터 실행되는지의 의미인데, UTC 11시 3분에 실행되어야 할 Job 이므로 11시 3분으로 표현된 것입니다. 즉 일반적으로 Next Dagrun Create After = Next Dagrun data interval end 입니다. 일반적으로 우리가 생각할 때 배치시간이 언제인가? 를 생각하면 보통 data interval end 를 보면 됩니다. 그런데 Airflow는 시간 표현을 항상 data_interval_start 로 표현하다보니 둘 간에 간극이 있어서 지금처럼 헷갈리는 경우가 종종 나옵니다. 답변이 충분히 되었는지요?아직 해소가 안된게 있으면 또 질문 올려주세요^^
- 0
- 1
- 42
질문&답변
2024.10.04
DAG 자동화 문의
elin님 실습 환경이 컴퓨터 WSL이죠? 그러면 당연하게도 컴퓨터를 끄면 AIRFLOW도 내려갑니다.아쉽게도 AIRFLOW를 계속 돌리려면 컴퓨터를 켜놓으야 합니다. 그리고 Airflow를 내렸다가 올리면 그동안 수행되지 않았던 스케줄을 수행할지 말지의 여부는 DAG의 catchup 변수가 결정합니다. 실습에서는 대부분 catchup 변수를 false로 설정했기 때문에 누락됐던 스케줄을 실행하지 않고 건너띕니다. 참고하세요 ^^
- 0
- 2
- 45
질문&답변
2024.10.04
airflow에 필요 패키지 설치방법 문의
안녕하세요 elin 님도커 컨테이너는 휘발성입니다. 즉 내렸다가 올리면 기존에 갖고있던 내용은 사라집니다. Elin님이 pip install한 내용도 사라지게 됩니다.그래서 도커 이미지 자체에 pip install한 내용을 심어줘야 합니다. 그러려면 도커 이미지 빌드를 해야하는데, 도커 이미지 빌드하는 방법은 섹션9. Connection & Hook 에서 더 많은 Provider 확인 & Connection type 추가하기에서 볼 수 있습니다. 이 내용을 아직 안보셨으면 이 내용 먼저 보세요.그리고 나서 만든 이미지를 바라보고 올라오도록 dockr compose 파일을 수정해주시면 됩니다. 좀 어려울 수 있는데 한번 시도해보세요 ^^
- 0
- 1
- 37
질문&답변
2024.09.27
airflow를 도커없이 돌리면 안되나요?
안녕하세요 김수인님!우선 윈도우에서는 airflow설치가 불가하고 도커 데스크탑 같은걸 써야하는데 WSL을 사용하는게 나아서 그렇게 실습을 진행합니다. 그리고 그냥 airflow 설치라는게 가장 간단한게 파이썬에서 pip install airflow 으로 설치하는건데, 그렇게 설치하시면 연습용으로도 사용하기 어려울 정도로 낮은 환경으로 설치가 됩니다. (sqlite 데이터베이스에 한번에 하나의 task만 수행 가능한 제한)그래서 공식 홈페이지에서도 pip install 방식으로 설치하는건 비권장합니다. 지금 실습 환경이 도커 컨테이너를 사용하는 것인데, 서버 하나의 컨테이너 6개를 모두 올려 실습하는 구조입니다. 사실 이것도 운영 환경에는 적합하지 않은 아키텍처이나 연습/테스트할 때 그나마 운영 환경과 비슷한 구조입니다. 혹시 도커 사용이 어려운 환경이신가요? 도커 사용이 어렵다면 redis 별도 설치, mysql or postgres DB를 별도 설치해서컨테이너 없이 Celery Executor 모드로 올릴 수는 있습니다. 이 방법은 강의 내용에는 없고 제 github 에 보시면 Wiki에 설명해 놓은게 있어요.충분한 답변이 되었는지 모르겠네요 참고하세요 ^^
- 0
- 2
- 62