분류 전체보기

Infra/Airflow

Docker 환경에서 Airflow DAG의 패키지 의존성 관리

이런 오류가 떴다면 필요한 python 라이브러리를 정의하지 않았거나 설치하지 않았다는 뜻이다. Airflow의 DAG를 Docker 컨테이너 내에서 실행시키려면 requirements.txt파일에 필요한 Python 패키지를 정의하고, 그 패키지들을 Docker 컨테이너 내에 설치해야 한다. 이렇게 해야 DAG가 필요한 모듈 및 라이브러리를 올바르게 사용할 수 있다. 1. requirements.txt 작성 예를 들어, 위와 같은 오류 메세지가 뜬 경우 xmltodict라는 라이브러리를 설치하도록 requirements.txt를 작성해주면 된다. 라이브러리만 작성할 경우 최신버전으로 설치되니 특정 버전을 설치하고 싶다면 ==1.4.0 과 같이 지정해주면 된다. 2. Dockerfile 작성 이제 doc..

Develop/DevCourseTIL

07.25 데이터 엔지니어링 77일차 - Spark AQE

Spark.sql.shuffle.partitions 이 변수 하나로 다양한 상황의 shuffling을 해결하기는 쉽지 않음 MapReduce 세상에서 mapreduce.job.reduces와 동일 적은 수의 Partition은 병렬성을 낮추고 OOM과 disk spill의 가능성을 높임 -> processing 시간이 오래 걸림 많은 수의 Partition은 task scheduler와 task 생성과 관련된 오버헤드가 생기며 너무 흔한 네트워크 I/O 요청으로 병목 초래 만약 Spark Engine Optimizer가 알아서 Partition의 수를 결정할 수 있다면? -> AQE의 목적 AQE "Dynamic query optimization that happens in the middle of qu..

Daily/Book

견고한 데이터 엔지니어링 chapter.4 후기

더보기 다양한 기술 중 어떤 기술을 채택할 것인가에 대해 고민할 때, 최첨단의 화려한 기술을 쫓는 데만 몰두하기 쉽다. 하지만 그것은 좋은 방법이 아니라고 말한다. 개인적으로 판단했을 때 기술은 더 나은 방향으로 발전하기 때문에 최신 기술이 가장 좋을 것이라고 생각했다. 하지만 이번 챕터를 읽고나서 이는 굉장히 위험한 생각이라는 것을 깨달았다. 그렇다면 어떤 기준으로 기술을 선택해야 할까? 곧 실무자가 되어 실제로 기술을 선택해야 하는 날이 올 때, 당황하지 않기 위한 대비책으로 이번 글을 정리했다. 그 기술이 데이터 제품과 광범위한 비즈니스에 가치를 더해줄 수 있는가? 데이터 엔지니어링 수명 주기 전체에 걸친 기술 선택 아키텍처를 올바르게 구축하기 전까지는 기술을 먼저 선택하는 일이 없도록 유의해야 한..

Daily/Book

견고한 데이터 엔지니어링 Chapter.3 후기

더보기 데이터 수명 주기를 다룬 후 아키텍처 설계에 대해 설명한다는 것은 우수한 아키텍처가 엔지니어링에 있어서 그만큼 중요하다는 뜻인 거 같다. 공감 하는게, 견고한 데이터 엔지니어링을 한다는 것은 곧 견고한 데이터 아키텍처가 기반이 되어야만 가능한 일이라고 생각한다. 이번 chapter3 후기도 chapter2와 마찬가지로 주관적인 메모장 정도이므로 책의 내용이 궁금하다면 꼭 구매해서 정독해보는 걸 추천한다. 데이터 아키텍처란? 기업의 진화하는 데이터 요구 사항을 지원하는 시스템 설계이다. 최적의 시스템을 설계하려면 모든 단계에서 트레이드오프를 고려해야 하며 동시에 값비싼 기술 부채를 최소화해야 한다. 되돌릴 수 있는 결정을 내려야 한다. 즉, 유연성과 트레이드오프의 균형을 유지하는 것이 중요하다. 우..

Develop/DevCourseTIL

06.21 데이터 엔지니어링 일차 53일차 - Dag Dependencies

Dag를 실행하는 방법 주기적 실행: schedule로 지정 다른 Dag에 의해 트리거 Explicit Trigger: Dag A가 분명하게 Dag B를 트리거 (TriggerDagOperator) Reactive Trigger: Dag B가 Dag A가 끝나기를 대기(ExtrnalTaskSensor) 알아두면 좋은 상황에 따라 다른 태스크 실행 방식들 조건에 따라 다른 태스크로 분기 (BranchPythonOperator) 과거 데이터 Backfill시에는 불필요한 태스크 처리 (LatestOnlyOperator) 앞단 태스크들의 실행상황 어떤 경우에는 앞단이 실패해도 동작해야 하는 경우가 있을 수 있음 Explicit trigger vs Reactive trigger Explicit trigger T..

Daily/Book

견고한 데이터 엔지니어링 Chapter.2 후기

더보기 Chapter1은 데이터 엔지니어링이 무엇인지 파악하는 단원이였다면 Chapter2에서는 1에서 수차례 강조되었던 데이터 엔지니어링 수명 주기에 대해 설명한다. 이 책을 읽으며 가장 마음에 들었던 점은 화려한 최신 기술들을 설명해주는 것이 아닌 데이터 엔지니어링의 숲을 파악할 수 있도록 집필되었다는 점이다. 이 분야에 조금이라도 관심있는 사람이라면 알 것이다. 이 직무는 굉장히 다양한 기술의 집합이라는 것을.. 그러나 기술의 집합이라고 보는 관점에서 벗어나도록 장려하는 것이 이 책의 주요 목표라고 한다. 따라서 이 후기도 단순한 책의 요약이 아닌, 데이터 엔지니어로 성장하고 생각하기 위해 주관적으로 되새기고 싶은 내용들의 메모 정도로 생각하길 바란다. Chapter.2 데이터 엔지니어링 수명 주기..

향식이
'분류 전체보기' 카테고리의 글 목록 (5 Page)