인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박준수님의 프로필 이미지
박준수

작성한 질문수

Airflow 마스터 클래스

Custom Hook 만들고 bulk_load하기

dag_seoul_api dag은 실행이 되는데 파일이 저장이 안되네요

작성

·

54

0

image.png

json으로 데이터로 잘불러왓고 dag도 성공적으로 마쳤다고 했는데 정작 files 폴더에는 저장이 안되어 있습니다.

그래서 docker inspect로 mount 속성을 보니

{ "Type": "bind", "Source": "/home/jspark9703/airflow/files", "Destination": "/opt/airflow/files", "Mode": "rw", "RW": true, "Propagation": "rprivate" }

propagation이 rprivate으로 되있더군요 아마 이 속성때문에 그런거같은데... volumes 속성을 바꾸는 방법은 없을까요? 아님 다른 문제가 있는 것일까요?

답변 1

0

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 박준수님!

저도 컨테이너 속성 한번 봤는데 propagation 속성은 동일하게 돼있어요. 아마 저 문제는 아닐 것 같아요.

  1. 우선 위 dag 수행이 마쳤을 때 컨테이너 안으로 들어가서 /opt/airflow/files 에 데이터가 있는지 확인해보시고

  2. 만약 파일이 없다면 수행하신 dag 내용을 올려주시겠어요? 보통 제 git에 있는 내용을 복붙해서 하시다가 내용이 조금 잘못 건드려서 잘못 수행하시는 경우가 있습니다.

  3. 그리고 docker-compose.yaml 파일의 volumes 항목 내용도 업로드 부탁드립니다.

박준수님의 프로필 이미지
박준수
질문자

답변 감사합니다.

원래 선생님의 방식대로 현재 날짜로 폴더를 만들었는데 에러 해결하는 과정에서 "Propagation": "rprivate" 속성에는 새로운 폴더가 생성되는게 안된다고...챗지피티가...그래서 바로 csv파일을 만드는 코드로 수정하였습니다.

추가로 권한 문제일수도 있을거같애서 chmod 777 명령어로 file 디렉토리 권한을 수정했습니다.

 

 

from operators.seoul_api_to_csv_operator import SeoulApiToCsvOperator
from airflow import DAG
import pendulum

with DAG(
    dag_id= "dags_seoul_api_corona",
    schedule="0 7 * * *",
    start_date=pendulum.datetime(2024,8,27, tz="Asia/Seoul"),
    catchup=False
) as dag :
    """대중교통 분실물"""
    tb_lost_article_info = SeoulApiToCsvOperator(
        task_id = "tb_lost_article_info",
        dataset_nm="lostArticleBizInfo",
        path="/opt/airflow/files",
        file_name= "TbLostArticleInfo{{data_interval_end.in_timezone('Asia/Seoul') | ds_nodash}}.csv"
    )
    """주차장"""
    tb_use_year_status_view = SeoulApiToCsvOperator(
        task_id = "tb_use_year_status_view",
        dataset_nm="TbUseYearstatusView",
        path="/opt/airflow/files",
        file_name= "TbUseYearstatusView{{data_interval_end.in_timezone('Asia/Seoul') | ds_nodash}}.csv"
    )
    
    tb_lost_article_info >> tb_use_year_status_vie
image.pngimage.png

 

김현진님의 프로필 이미지
김현진
지식공유자

아 챗gpt가 거짓말을 했군요 ㅋㅋ

어쩐지 볼륨속성에 그런 정보까지는 잘 들여다보지는 않는데 의아했어요 ^^

그런데 files디렉토리에 권한이 없다면 보통 권한 에러가 뜨면서 dag도 에러로 종료되거든요. 아마 에러없이 성공으로 마쳤다면 권한 문제는 아니었던것 같아요. 보통 권한문제는 files 디렉토리를 만들때 sudo mkdir files 명령어로 수행했을 때 발생합니다. root 로 만들어지거든요.

 

그나저나 실습과 달리 다른 데이터셋으로 해보신것고 훌륭합니다. 코로나 데이터셋이 더이상 갱신이 안되고있어서..^^

그래서 지금은 문제가 해결이 된건가요?

박준수님의 프로필 이미지
박준수

작성한 질문수

질문하기