#️⃣ [1] 깔끔한 DAG 작성 1.1. 스타일 가이드 사용 PEP8 스타일가이드 및 구글과 같은 회사 가이드 맟추기 : 변수/클래스/함수 이름 지정 스타일등에 대한 권장 사항 pylint와 flake8과 같은 정적 코드 검사기로 코드 품질 확인 YAPF, Black과 같은 파이썬 코드 포맷터 사용하여 공통 포맷 적용함 Airflow 코드 스타일 규칙에 맞추기 DAG 정의 스타일 2가지 : 콘텍스트 매니저 사용 및 사용 X Task 종속성 표기법 1.2. 중앙에서 자격 증명 관리 Airflow 메타스토어에서 자격증명 가져오기 혹은 배포 방법에 따라 보안 정보를 외부 시스템에 저장 1.3. 구성 세부 정보 일관성 있게 지정하기 파일 경로나 테이블명과 같은 DAG 구성 정보는 전역변수(DAG내), 구성파일..
#️⃣ Data Engineering/Airflow
⭐핵심 요약 DAG 무결성 테스트와 개별 단위 테스트 설명 중점적임 책에서는 대중적으로 많이 쓰이고 격리 기능 포함된 pytest를 이용하여 설명함 [ 참고 ] 보통 단위 > 통합 > 승인 테스트 순서로 진행함 테스트는 각각 격리된 환경에서 진행되어야 한다. ⇒ 이를위해 목업을 이용 (pytest-mock)=> (목업은 특정 작업이나 객체를 모조로 만드는 것) #️⃣ DAG 무결성 테스트 (with. CI/CD) 모든 DAG의 무결성 (e.g. DAG에 사이클 있는지 여부, DAG의 task id 고유한 경우 등) 검사한다. 이때 CI/CD 파이프라인을 이용하여 변경된 DAG코드를 지속적으로 확인 및 검증 후 프로덕션 환경으로 배포할 수 있게 한다. 과정 pytest 설치 프로젝트 최상단 폴더에 별도에 ..
#️⃣ 1. Airflow 커스텀 컴포넌트 Airflow는 기본 내장 기능 확장 가능하다 → 공통 작업을 커스텀 오퍼레이터/센서/훅으로 개발 가능 ⇒ 이후 파이썬 라이브러리로 구현하여 구조적으로 만들 수 있음 커스텀 훅으로 Airflow가 지원하지 않는 시스템과 연동 가능 커스텀 오퍼레이터 개발은 Airflow 기본 내장 Operator로 처리할 수 없는 태스크를 수행할 수 있게 함, 코드 재사용 가능 커스텀 센서는 특정(외부) 이벤트 발생할 때까지 대기하는 컴포넌트 구현 가능 #️⃣ 2. 실습 예제 : 영화 평점 API에서 데이터를 가져와서 인기 영화 랭킹을 추출하는 실습 영화 평점 데이터는 JSON 포맷 데이터 API 호출 시 offset, limit, start_date과 end_date 파라미터를..
☀️ Ch7. Airflow 외부 시스템과 통신하기 #️⃣ 1. Airflow 일반적인 사용 사례 1-1. 머신러닝 모델 학습 Airflow 워크플로는 일반적으로 오프라인 부분(:데이터 셋으로 학습하고 결과를 저장) 담당함 모델 학습 부분 : 데이터 로드하고 모델에 적합한 형식으로 전처리하여 모델 학습하는것 주기적으로 모델 재학습하는 것은 Airflow 배치 프로세스 기능에 적합함 1-2. 시스템 간 데이터 이동 Airflow 일반적인 사용 사례는 정기적인 ETL 작업이다. 프로덕션 데이터베이스 같은 곳에서 매일 데이터 다운로드하고 다른곳에서 변환 이때 스토리지 저장 공간은 증가하고, 모든 데이터를 처리하기 위해서는 분산 처리가 필요하게 됨 #️⃣ 2. Airflow 단일 태스크 실행 명령어 airflo..
Ch6. Airflow 워크플로 트리거 워크플로 트리거 방법 스케줄 간격 ← ch2 특정 태스크 수행 후 트리거 ← ch6 6.1 센서를 사용한 폴링 조건 Sensor: Airflow 오퍼레이터의 특수타입(서브클래스) 센서는 특정 조건이 true인지 지속적으로 확인하고 true라면 성공함 Poke(포크) / Poking Poking은 센서를 실행하고 상태를 확인하기 위해 Airflow에서 사용하는 이름 e.g. 센서는 대략 1분에 한 번씩 주어진 파일이 있는지 포크(Poke)한다. FileSensor FileSensor : 파일 존재 여부에 따라 true/false반환. False시 해당 센서는 지정된 시간 (기본 60초) 대기 후 다시 시도함 글로빙(globbing)을 사용하여 파일/디렉토리 이름과 패..
Ch5. 태스크 간 의존성 5.1 기본 의존성 유형 다양한 태스크 의존성 패턴이 있음 태스크 의존성을 명시적으로 지정 시 장점: 여러 태스크에서 (암묵적인) 순서를 명확하게 정의 가능 업스트림 태스크/다운스트림 태스크 : A (업스트림)→B (다운스트림태스크) 5.1.1. 선형 의존성 유형 >> 로 의존성 만듦 이때 기본 값으로 설정 시, 모든 오류는 Airflow에 의해 다운스트림 태스크로 전달되어 실행을 지연시킴 5.1.2. 팬인/팬아웃(Fan-in/Fan-out 의존성) #️⃣팬아웃(Fan-out): 여러개의 입력 태스크 연결 수 제한) - 업스트림 DAG의 시작을 나타내는 더미 태스크 추가하면 암묵적인 팬아웃 설명하는데 도움됨 #️⃣팬인 구조(Fan-in) : 단일 다운스트림 태스크가 여러 업스트..