이 코드에서 첫 번째 함수는 파일 크기, 라인 수, JSON 유효성 같은 메타데이터 수준 검증을 수행하고, 두 번째 함수는 pandas로 실제 데이터를 읽어 필수 컬럼의 NULL 여부를 검증
- [Iceberg]Open Table format 개요
- [DB]Log-Structured vs Page-Oriented
- [Web]WAS의 구성
- [데이터 엔지니어링 디자인 패턴]03-1. Dead-Letter
- [데이터 엔지니어링 디자인패턴]04-1. Idempotency 멱등성 기초
- [데이터 엔지니어링 디자인 패턴]03-06. Static, Dynamic Late Data Integrator
- [데이터 엔지니어링 디자인패턴]03. Clickhouse에서 지연데이터 handling하기
- [DE Design Pattern]02-6. Data Readiness
- [데이터 엔지니어링 디자인 패턴]02-3. Change Data Capture
- [데이터 엔지니어링 디자인 패턴]02-5. Data Compaction
Type Constraint — 특정 컬럼의 모든 값이 항상 같은 타입임을 보장.
1) External Service/Library 모드 — Schema Registry 같은 외부 서비스가 스키마를 버전 관리하고, producer가 데이터를 쓰기 전에 스키마를 검증한다. 호환성 규칙을 명시적으로 설정
Bucket 패턴은 고카디널리티(high-cardinality) 컬럼에 대해 데이터 접근을 최적화하는 패턴.
데이터를 특정 컬럼 기준으로 정렬하여 저장함으로써, 쿼리 시 불필요한 데이터 블록을 건너뛸 수 있게 하는 패턴
Metadata Enhancer는 데이터 파일에 통계 정보(min, max, null count 등)를 메타데이터로 저장하여, 쿼리 시 데이터를 읽기 전에 불필요한 파일/블록을 스킵하는 패턴
비싼 쿼리의 결과를 물리적으로 저장해두고, 이후 소비자는 저장된 결과만 읽게 하는 패턴
Concept
어떤 아키텍처를 선택할지는 결국 **“병목이 어디에 있는가?”**에 기반함
분산 처리 환경에서 데이터를 연산하기 위해 노드 간에 데이터를 재분배하는 과정. 정확히는 분산노드간 특정 키를 기준으로 클러스터 전체의 데이터를 조합하는것
메타데이터 조작 방식은 필연적으로 덤프파일 생성 및 파티션 단편화라는 관리 비용을 발생시킴.
프레임워크 기반: Spark Structured Streaming, Flink이 체크포인트 위치만 설정하면 자동 관리
고정된 lookback window를 정의하여 매 실행마다 현재 파티션 + 과거 N일치를 함께 처리
핵심: CASE문이 첫 번째로 실패한 조건을 status_flag에 기록
파이프라인 레이어(컴퓨팅)에서 무거운 병합 연산을 직접 수행하는 전통적인 방식.
Airflow에서 SparkSubmitOperator를 통해 실행된 PySpark 애플리케이션이 로컬 개발 환경에서는 잘 동작하지만, YARN 클러스터 환경에서는 configparser.NoSectionError를 발생시키며 실패하는 현상을 다룸
ClickHouse에서 FINAL 키워드는 MergeTree 계열 테이블에서 아직 물리적으로 Merge되지 않은 중복/삭제/버전 데이터를, 쿼리 시점에 강제로 정리해서 읽는 키워드
전체 교체 패턴
두 방식의 결정적 차이를 정리하면: