← 학습 카테고리

Learn

Spark

84개 모듈 · 현재 75번째

Spark 모듈 75/84 spark-learn-75

Delta Lake Liquid Clustering — 파티션도 Z-Order도 아닌 세 번째 방식

Delta Lake Liquid Clustering 및 PySpark Python Data Source API 공식 문서 종합 (웹 리서치, 2026) — Delta Lake 공식 블로그(liquid-clustering), Apache Spark 공식문서(python_data_source tutorial) Delta Lake 공식 블로그 Liquid Clustering

이 모듈을 다 읽으면

  • Liquid Clustering이 spark-learn-55의 ZORDER와 어떻게 다른지(재클러스터링 유연성) 설명할 수 있다
  • CLUSTER BY로 지정한 컬럼을 나중에 바꿀 수 있다는 것과, 이것이 전통 파티셔닝의 제약과 어떻게 다른지 설명할 수 있다

spark-learn-55에서 다룬 OPTIMIZE/ZORDER(정렬 기반 데이터 재정렬)를 전제로, 이를 대체하는 최신 레이아웃 전략인 Liquid Clustering이 무엇을 다르게 하는지를 정리한다.

CLUSTER BY — 파티셔닝도 ZORDER도 아닌 새 레이아웃 전략

Liquid Clustering은 전통적인 Hive 스타일 파티셔닝이나 반복적으로 ZORDER를 실행하는 대신, CLUSTER BY로 클러스터링 컬럼을 지정하는 새로운 테이블 레이아웃 전략이다 — 예를 들어 CREATE TABLE sales_clustered CLUSTER BY (customer) 같은 CTAS 문으로 만든다. 테이블당 최대 4개까지 클러스터링 컬럼을 지정할 수 있다. 다만 이 기능은 전통적인 파티셔닝이나 ZORDER와 함께 쓸 수 없다는 호환성 제약이 있다 — 새 테이블에는 Databricks가 이 방식을 권장한다.

핵심 포인트

  • CLUSTER BY로 클러스터링 컬럼 지정(최대 4개) — 전통 파티셔닝이나 반복 ZORDER를 대체하는 새 레이아웃 전략
  • 전통 Hive 스타일 파티셔닝·ZORDER와는 함께 쓸 수 없는 호환성 제약 — 신규 테이블에는 이 방식이 권장됨

spark-learn-55의 ZORDER와의 결정적 차이 — 유연성

ZORDER는 매번 실행할 때마다 전체(또는 지정 범위) 데이터를 그 시점의 정렬 기준으로 다시 재정렬하는 비멱등적 작업이다 — spark-learn-55에서 다룬 것처럼, ZORDER 기준 컬럼을 바꾸면 그동안 정렬해둔 이전 결과가 새 기준과 안 맞아 다시 처음부터 재작업해야 한다. Liquid Clustering은 이 제약을 없앤다 — 클러스터링 컬럼을 언제든 바꿀 수 있고, 이미 클러스터링된 파일들은 명시적으로 재작업을 지시하지 않는 한 건드리지 않는다. 즉 클러스터링 기준을 바꿔도 과거에 이미 정리해둔 데이터는 그대로 두고 새로 들어오는 데이터부터 새 기준을 적용하는 점진적 방식이 가능하다.

핵심 포인트

  • ZORDER(spark-learn-55)는 재정렬이 비멱등적 — 기준 컬럼을 바꾸면 이전 정렬 결과가 무의미해져 전체 재작업 필요
  • Liquid Clustering: 클러스터링 컬럼을 언제든 변경 가능 + 이미 클러스터링된 파일은 명시적 지시 없이는 안 건드림 — 점진적 전환 가능