전체 글 74

36개월 어록 — 닭장 속 병아리들

닭장에 병아리들이랑 인사하고 올게 🐣아빠가 골프 연습장에 다녀오겠다고 하면서 "닭장 좀 다녀올게"라고 말한 적이 있다. 그 뒤로 아이는 아빠가 나갈 때마다 자기도 닭장에 가고 싶다고 한다. "나도 닭장에 가고싶다.. 아빠 병아리들이랑 인사하고 오겠다"라면서. 골프 연습장 타석을 닭장이라고 부른 어른들 말장난이, 아이 머릿속에서는 진짜 병아리가 있는 곳이 됐다.근데 충전이 뭐야? 🔌매일 밤 자기 전엔 '엄마충전시간'이 있다. 엄마와 포옹하고 뽀뽀하고 나면 "충전 다했다"고 말하고 아빠와 자리에 눕는다. 그런데 그날 밤엔 눕자마자 물었다. "아빠 근데 충전이 뭐야? 충전 어떻게 하는거야?" 몇 달째 매일 하던 말인데, 정작 그 말이 무슨 뜻인지는 모르고 있었던 거다.꽃이 무성해, 해가 저물어가 🌻산책하..

육아를 하다 2026.08.26

Day 10. Delta Lake 심화 — 최적화와 데이터 적재

데이터를 계속 쌓다 보면 성능이 떨어진다. 오늘은 Delta Lake 테이블을 빠르게 유지하는 방법과, 데이터를 안전하게 적재하는 패턴을 정리한다.왜 최적화가 필요한가? — Small File Problem데이터를 계속 적재하면 작은 파일이 쌓인다.Delta 테이블 폴더├── part-00001.parquet (1MB)├── part-00002.parquet (500KB)├── part-00003.parquet (200KB)... 파일 수천 개쿼리할 때 파일 수천 개를 하나씩 열어야 해서 느려진다. 이게 Small File Problem이다.OPTIMIZE — 작은 파일 합치기OPTIMIZE orders흩어진 작은 파일들을 128MB짜리 큰 파일로 합친다.Before: 파일 1000개 (각 1MB)Aft..

Day 09. Spark UDF + Higher Order Functions

pandas의 apply()나 SQL UDF를 써본 사람에게도 Spark UDF는 낯설다. 분산 환경이라는 특성 때문에 등록 방식과 성능 특성이 다르다.Spark UDF왜 pandas처럼 apply()를 못 쓰나?Spark는 데이터가 여러 서버에 분산되어 있다. apply()는 단일 머신에서 순서대로 실행하는 방식이라 분산 환경에서 동작하지 않는다. UDF는 Spark가 각 파티션에 함수를 전달해서 분산 실행할 수 있도록 만든 것이다.Python UDF 만들기from pyspark.sql.functions import udffrom pyspark.sql.types import StringType@udf(returnType=StringType())def grade_label(score): if sco..

Day 08. DataFrameReader API + Views

Delta 테이블만 읽다 보면 CSV, JSON, Parquet 같은 원천 파일을 읽을 때 막힌다. 오늘은 다양한 파일 포맷을 읽는 DataFrameReader API와, 쿼리를 저장해두는 View 3종류를 정리한다.DataFrameReader APIpandas의 read_csv()처럼 파일을 읽어 DataFrame으로 만드는 도구다.spark.read.format("형식").option("옵션명", "옵션값").load("경로")pandas와 차이점: pandas read_csvSpark DataFrameReader처리 위치단일 머신 메모리클러스터 분산 처리파일 크기 한계수백 MB수백 GB실행 시점즉시Lazy (Action 전까지 대기)폴더 통째로 읽기불가가능# pandas는 파일 하나씩pd.read_..

Day 07. Databricks 아키텍처 + Notebooks + Git Folders

오늘 배운 개념들은 하나의 중심에서 시작된다.Databricks Notebook (작업 공간) ├── Magic Command — 노트북 셀의 언어/동작 전환 ├── dbutils — 노트북에서 파일·시크릿 다루기 └── Git Folders — 노트북을 GitHub에 저장·관리Magic Command, dbutils, Git Folders 모두 노트북을 쓰다 생기는 필요에서 나온 기능이다. 노트북이 뭔지 알면 나머지가 자연스럽게 연결된다.Databricks 아키텍처식당으로 비유하면 이렇다.홀 (Control Plane) 주방 (Data Plane)───────────────── ─────────────────손님이 주문 실제 요리 (코드 실행)웨이..

Day 06. Workflows — 파이프라인 자동화의 진화

하둡 시절 Oozie를 썼다. XML로 워크플로우를 정의해야 했고, 로그가 부실해서 뭐가 잘못됐는지 파악하기 어려웠다. 그 다음엔 Airflow로 넘어갔다. Python으로 DAG를 작성할 수 있어서 훨씬 나았지만, 별도 서버가 필요하고 Databricks 연동은 따로 설정해야 했다.Databricks Workflows는 그 다음 단계다.스케줄링 도구의 흐름Oozie (하둡 시대) → XML 기반, 로그 부실, 복잡 ↓Airflow → Python DAG, 모니터링 개선, 별도 서버 필요 ↓Databricks Workflows → Databricks 내장, 별도 서버 불필요Workflows란?작업을 스케줄링하고 자동화하는 기능이다.매일 오전 9시..

Day 05. Delta Live Tables — 파이프라인을 선언만 하면 알아서 실행되는 구조

Airflow를 써봤다면 익숙한 패턴이 있다. 태스크 순서, 의존성, 재시도, 모니터링을 전부 코드로 직접 관리해야 했다. DLT는 그걸 선언만 하면 알아서 해준다.기존 방식 vs DLT# 기존 방식 - 직접 다 관리df = spark.read.table("raw_orders")df_clean = df.filter(col("amount") > 0)df_clean.write.format("delta").saveAsTable("clean_orders")# DLT 방식 - 선언만@dlt.tabledef clean_orders(): return dlt.read("raw_orders").filter(col("amount") > 0) 기존 방식DLT실행 순서직접 관리의존성 자동 파악Delta Table 생성직..

요즘 사고 싶은 육아템 — 초경량 유모차

아이가 크면서 육아템엔 관심이 시들해졌다 🧸아이가 크면서부터는 육아템에 큰 관심이 없어졌다. 이것저것 사들이던 시기도 지났고, 있는 것만으로도 충분한 시기가 됐다고 생각했다. 그런데 가볍고 부피가 작은 유모차가 있다는 걸 알고 나서는 이야기가 달라졌다.여행을 좋아하는 집이라 더 눈이 갔다 ✈️여행을 좋아하는 집이다 보니, 접었을 때 부피가 작고 가벼운 유모차에 자연스럽게 관심이 갔다. 공항에서 유모차를 끌고 다니거나 캐리어와 같이 들고 다녀야 할 때마다, 지금 쓰는 유모차의 부피와 무게가 아쉬웠던 적이 많았다.찾아보니 몇 가지 모델이 있었다 🔍찾아보니 이 초경량 유모차 시장에 몇 가지 모델이 있었다.GB 포킷은 일본에서 발매된 모델로, 기네스북에 '세계에서 가장 작게 접히는 유모차'로 등재됐을 정도로..

육아를 하다 2026.07.28

이유식 회고 — 현타에서 시작해 알게 된 것들

이렇게까지 해야 하나 현타가 왔다 🤯이유식을 시작하면서 제일 먼저 든 생각은 '이걸 진짜 이렇게까지 해야 하나'였다. 재료 하나씩 며칠 텀을 두고 테스트하고, 간도 하면 안 되고, 알레르기 유발 식품은 순서도 따로 있고, 이유식 책엔 몇 개월 몇 주 차엔 무슨 재료를 써야 하는지가 표로 정리되어 있었다. 새벽에 일어나 쌀가루를 체에 거르면서, 문득 이런 생각이 들었다. 나는 어릴 때 미역국에 밥 말아먹고도 잘 컸다는데, 왜 지금은 이렇게까지 복잡하게 해야 하는 걸까.찾아보니 나름의 이유가 있었다 🔍궁금해서 찾아봤다. 돌 전 아기는 콩팥이 나트륨을 처리하는 능력이 성인과 비교가 안 될 만큼 약해서, 어른 반찬의 염분도 아기에겐 부담이 될 수 있다는 것. 알레르기 유발 식품도 예전처럼 무조건 늦게 주는 ..

육아를 하다 2026.07.28

Day 04. Structured Streaming — 데이터가 흘러오는 걸 실시간으로 처리하기

Auto Loader는 새 파일이 오면 처리하는 방식이었다. Structured Streaming은 데이터 스트림 자체를 실시간으로 처리한다.Auto Loader vs Structured StreamingAuto Loader: 파일 단위로 감지 file1.json → file2.json → file3.jsonStructured Streaming: 데이터가 흘러오는 스트림을 계속 처리 row1 → row2 → row3 → row4 → ...실무에서 어떤 걸 쓰느냐는 데이터 특성에 따라 달라진다.방식언제Structured Streaming (Kafka)클릭, 주문, 결제 등 내부 서비스 이벤트 실시간 처리Auto Lo..