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