본문 바로가기
반응형

분류 전체보기135

[dbt] dbt에서 for loop 작성하기(jinja macro) | LIM dbt for loop 작성하는 것은 파이썬의 for loop 을 작성하는 것과 매우 유사하다. 나의 경우 union all 을 할 때 for loop 을 사용했다. 💡 테스트할 테이블 스키마 date_column: date month: int64 [for loop 을 사용하지 않은 쿼리] select date('2023-01-01') as date_column, 1 as month union all select date('2023-02-01') as date_column, 2 as month union all select date('2023-03-01') as date_column, 3 as month [dbt 를 활용해서 for loop 을 사용] {{ config( materialized="tabl.. 2023. 11. 28.
[Git] Git Hook (pre-commit) | LIM 1. Git Hook 이란? Git에서 어떠한 이벤트(commit, push..) 가 발생했을 때 특정 스크립트를 실행하도록 하는 것이다. 다양한 종류가 있다. - pre-commit - prepare-commit-msg - pre-push - commit-msg ... 해당 hook 종류는 git으로 관리되고 있는 프로젝트에 들어가서 .git/hooks 로 들어가면 확인할 수 있다. 나는 그 중 pre-commit 을 이용해서 dbt 에서 특정 모델에 대한 tag 관리 및 description 관리 등을 수행했다. 2. Pre-Commit 설정하기 크게 두 가지 방법이 있다. 로컬에서 설정해서 내 로컬에서만 적용되게끔 하는 경우와 다른 팀원들과의 공유를 통해 팀 전체에서 동일한 git hook 을 사용.. 2023. 11. 21.
[Kubernetes] Kubernetes 기본 개념 정리 | LIM Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리하기 위한 오픈 소스 플랫폼이다. Docker 가 정해진 레시피를 토대로 만들어진 요리라면 Kubernetes는 주방장이라고 볼 수 있다. 이 Kubernetes 주방장이 요리사들을 관리하며 어떤 요리사가 어떤 요리를 어떻게 해야 하는 지 지시한다. Kubernetes 의 대표적인 기능 [자동 스케일링] 쿠버네티스는 애플리케이션의 트랙픽이 증가할 때 자동으로 파드의 수를 늘리고, 트래픽이 감소할 때는 줄여주는 자동 스케일링 기능을 제공한다. CPU 사용률, 메모리 사용량 등 다양한 매트릭을 기반으로 동작한다. 이러한 기능 덕분에 트랙픽의 변화에 따른 장애 상황을 방지하고, 리소스를 효율적으로 사용할 수 있다. 이로 인해 운영.. 2023. 10. 22.
[Airflow] KubernetesExecutor vs CeleryExecutor | LIM KubernetesPodOperator 를 사용하게 되면서 자동으로 Executor 는 어떻게 설정해야 하는 것인가에 대한 고민이 시작되었다. 물론 현재 설정되어 있는 CeleryExecutor로도 KubernetesPodOperator는 정상 동작한다. 그럼 왜, KubernetesExecutor 를 사용하는 것일까? 기본 차이점 CeleryExecutor의 경우 여러대의 워커 머신을 사용해서 동시에 여러 작업을 분산 실행할 수 있다. Celery는 메시지 브로커(RabbitMQ, Redis 등)를 사용하여 메시지를 전달하고, 워커 머신들은 이러한 메시지를 받아 작업을 실행한다. 아키텍처는 다음과 같다. KubernetesExecutor의 경우 각 Airflow 작업을 Kubernetes의 개별 파드로.. 2023. 9. 17.
[Airflow] KubernetesPodOperator 로컬 테스트를 위한 환경 구축(feat. KIND(Kubernetes In Docker) | LIM docker image를 활용해 airflow에서 실행시키기 위해서 KubernetesPodOperator를 사용하게 되었는데 이는 기존 로컬 환경에서 테스트가 바로 안 된다는 단점이 있었다. 이번에 한국데이터 엔지니어 모임 3회에 참여해 발표를 들었던 내용 중에 로컬 환경에서 KubernetesPodOperator 를 사용할 수 있게끔 로컬 Airflow on K8S 구축에 Vault 곁들이기 설명을 들었는데 그 블로그를 참조해서 테스트해보았다. 🚀 KIND(Kubernetes in Docker) 활용하기 Kubernetes In Docker는 Kubernetes 클러스터를 Docker 컨테이너 내에서 실행할 수 있게 해주는 도구다. 이를 활용해 빠르고 쉽게 로컬 환경에서 Kubernetes 클러스터를.. 2023. 9. 17.
[견고한 데이터 엔지니어링] 6장. 데이터 저장 | LIM 데이터 저장은 데이터 엔지니어링 수명 주기의 토대로서 주요 단계인 수집, 변환 및 서빙의 기초가 된다. 데이터 스토리지의 기본 구성 요소 스토리지는 너무 일반적이다 보니 당연한 것으로 받아들이기 쉽다. 자기 디스크 드라이브는 오래전부터 사용되어 왔으며, 저장된 데이터의 기가바이트당 가격이 SSD보다 훨씬 저렴하므로 여전히 대용량 데이터 스토리지 시스템의 근간을 이룬다. [임의 접근 메모리] 우리는 일반적으로 임의 접근 메모리(Random-Access Memory) 와 메모리(Memory)라는 용어를 혼용해 사용한다. 엄밀히 말하자면 자기 드라이브와 SSD는 나중에 임의 접근 검색을 위해 데이터를 저장하는 메모리 역할도 하지만, RAM에는 다음과 같은 몇 가지 특징이 있다. CPU에 연결되고 CPU 주소 .. 2023. 8. 24.
반응형