Skip to main content
이 문서는 레이크하우스 아키텍처 섹션의 일부입니다.

Column Mapping Mode 내부 동작 상세

Column Mapping은 Delta Lake에서 스키마 유연성을 크게 높이는 핵심 기능입니다. 내부 동작 원리를 이해하면 제한사항과 문제를 예방할 수 있습니다.

물리적 이름 vs 논리적 이름

Column Mapping이 활성화되면, 테이블의 논리적 컬럼 이름(사용자가 보는 이름)과 물리적 컬럼 이름(Parquet 파일 내 실제 이름)이 분리됩니다.

메타데이터 저장 위치

Column Mapping 정보는 Delta Log의 메타데이터 액션 에 저장됩니다.

이름 변경/삭제의 실제 동작


Column Mapping 활성화 시 제한사항

Column Mapping을 활성화하면 강력한 기능을 얻지만, 몇 가지 중요한 제한사항이 있습니다.

호환성 제한

Streaming과 Column Mapping의 상호작용

⚠️ 중요: Column Mapping이 활성화된 테이블에서 컬럼을 이름 변경하거나 삭제 하면, 해당 테이블을 읽는 Structured Streaming 쿼리가 실패 할 수 있습니다.

대규모 스키마 변경 전략 (컬럼 100개+ 추가)

실무에서는 스키마가 한 번에 수십~수백 개의 컬럼이 추가되는 경우가 있습니다(예: IoT 센서 데이터, 설문 데이터 등).

대량 컬럼 추가 방법 비교

대량 컬럼 추가 실습 (mergeSchema 활용)

스키마 변경 시 다운스트림 영향 관리


Auto Loader 스키마 진화와의 관계

Auto Loader의 스키마 진화는 Delta Lake의 스키마 진화(mergeSchema)와 함께 동작하며, 소스 파일 → 타겟 테이블 전체 흐름에서 스키마를 관리합니다.

Auto Loader + Delta 스키마 진화 전체 흐름

schemaEvolutionMode와 Delta mergeSchema의 관계

Rescue 모드 활용 패턴 (프로덕션 권장)

💡 프로덕션 권장 패턴: Bronze 레이어에서는 rescue 모드를 사용하여 예기치 않은 스키마 변경을 안전하게 캡처하고, Silver/Gold 레이어에서는 DDL로 명시적 스키마 관리를 하는 것이 가장 안정적입니다.

SDP(선언적 파이프라인)에서의 스키마 진화 처리

SDP(Structured Data Pipelines, 구 DLT)에서도 스키마 진화를 처리할 수 있습니다.

SDP에서의 스키마 진화 설정

SDP 스키마 진화 시 주의사항


정리


참고 링크