원문: Delta UniForm: a universal format for lakehouse interoperability
참고 업데이트: BigQuery는 이제 BigLake를 통해 Delta Lake를 네이티브로 지원합니다. 자세한 내용은 문서를 참고하세요.오픈 데이터 레이크하우스를 도입할 때 조직이 직면하는 핵심 과제 중 하나는 데이터에 최적화된 포맷을 선택하는 것입니다. Linux Foundation Delta Lake, Apache Iceberg, Apache Hudi는 모두 데이터 민주화와 상호운용성을 가능하게 하는 훌륭한 스토리지 포맷입니다. 이 세 가지 포맷 중 어느 것을 선택하든 독점 포맷에 데이터를 저장하는 것보다는 낫습니다. 그러나 단일 스토리지 포맷으로 표준화하는 것은 결정 피로(decision fatigue)와 돌이킬 수 없는 결과에 대한 두려움을 야기할 수 있는 쉽지 않은 작업입니다. Delta UniForm (Delta Lake Universal Format의 약자)은 추가적인 데이터 복사본이나 사일로를 생성하지 않고 테이블 포맷을 간단하고 쉽게 원활하게 통합하는 솔루션을 제공합니다. 이 블로그에서는 다음 내용을 다룹니다:
- Delta UniForm 소개 및 그 이점
- Delta UniForm을 Iceberg 테이블로 읽기
- Iceberg Metadata Path 방식
- Iceberg REST Catalog API 방식
여러 포맷, 단일 데이터 복사본
Delta UniForm은 Delta Lake, Iceberg, Hudi가 모두 Apache Parquet 데이터 파일 위에 구축되어 있다는 사실을 활용합니다. 포맷 간의 주요 차이점은 메타데이터 레이어에 있으며, 그 차이도 미묘한 수준입니다. 세 포맷의 메타데이터는 모두 동일한 목적을 수행하며 겹치는 정보 집합을 포함합니다. Delta UniForm 출시 이전에는 오픈 테이블 포맷 간 전환 방식이 복사 또는 변환 기반이었고, 특정 시점의 데이터 뷰만 제공했습니다. 반면 Delta UniForm은 포맷에 관계없이 모든 리더에게 데이터의 실시간 뷰를 제공함으로써 상호운용성 요구를 더 우아하게 해결합니다. 내부적으로 Delta UniForm은 단일 Parquet 데이터 복사본에 대해 Delta Lake와 함께 Iceberg 및 Hudi 메타데이터를 자동으로 생성하는 방식으로 동작합니다. 그 결과 팀은 각 데이터 워크로드에 가장 적합한 도구를 사용하면서도 모두 단일 데이터 소스에서 작동할 수 있으며, 세 가지 생태계 전반에 걸쳐 완벽한 상호운용성을 확보할 수 있습니다. 아래 다이어그램은 이 핵심 아이디어를 보여줍니다. Delta UniForm이 활성화된 테이블에 쓰기가 발생하면, 동일한 Parquet 파일을 바탕으로 Delta Lake, Iceberg, Hudi 각각의 메타데이터 레이어가 자동으로 생성됩니다.
빠른 설정, 최소한의 오버헤드
Delta UniForm은 설정이 매우 간단하며, 한 번 활성화하면 원활하고 자동으로 작동합니다. 먼저 Iceberg 메타데이터를 생성하기 위한 Delta UniForm 테이블을 만들어 보겠습니다:Delta UniForm을 Iceberg로 읽기
Delta UniForm은 Apache Iceberg 사양에 따라 Iceberg 메타데이터를 생성합니다. 즉, Delta UniForm 테이블에 데이터를 쓰면, 오픈소스 Iceberg 사양을 준수하는 Iceberg 생태계의 모든 클라이언트에서 Iceberg로 읽을 수 있습니다. Iceberg 사양에 따르면 리더 클라이언트는 Iceberg 테이블의 최신 상태를 나타내는 Iceberg 메타데이터를 파악해야 합니다. Iceberg 생태계 전반에서 클라이언트들은 이를 위해 두 가지 접근 방식을 취하며, UniForm은 두 가지 모두를 지원합니다. 여기서는 그 차이를 설명하고 다음 섹션에서 예시를 제공하겠습니다. 일부 Iceberg 리더는 사용자가 Iceberg 테이블의 최신 스냅샷을 나타내는 메타데이터 파일의 경로를 제공해야 합니다. 이 방식은 테이블이 변경될 때마다 사용자가 업데이트된 메타데이터 파일 경로를 제공해야 하므로 번거로울 수 있습니다. 대안으로, Iceberg 커뮤니티는 REST Catalog API 사용을 권장합니다. 클라이언트는 카탈로그에 접속하여 테이블의 최신 상태를 가져오므로, 사용자는 수동 새로 고침이나 메타데이터 경로에 대한 걱정 없이 Iceberg 테이블의 최신 상태를 읽을 수 있습니다. Unity Catalog는 이제 Apache Iceberg 사양에 따라 오픈 Iceberg Catalog REST API를 구현합니다. 이는 오픈 API 지원에 대한 Unity Catalog의 의지와 일치하며, Unity Catalog의 HMS API 지원의 모멘텀 위에 구축된 것입니다. Unity Catalog Iceberg REST API는 Databricks 컴퓨팅 비용 없이 Iceberg 포맷으로 UniForm 테이블에 대한 오픈 액세스를 제공하면서, 최신 데이터에 액세스하기 위한 상호운용성과 자동 새로 고침 지원을 허용합니다. 부가적으로, 이를 통해 다른 카탈로그들이 Unity Catalog에 연합(federate)하고 Delta UniForm 테이블을 지원할 수 있게 될 것입니다. Apache Iceberg 클라이언트 라이브러리에는 Iceberg REST API Catalog와 인터페이스하는 기능이 사전 패키지화되어 있습니다. 이는 Apache Iceberg 표준을 완전히 구현하고 카탈로그 엔드포인트 구성을 지원하는 모든 클라이언트가 Unity Catalog Iceberg REST API Catalog에 쉽게 액세스하고 테이블의 최신 메타데이터를 가져올 수 있음을 의미합니다. 이로써 테이블 메타데이터 관리 작업이 사라집니다. 다음 섹션에서는 메타데이터 경로와 Iceberg REST Catalog API 방식 모두에 대한 Delta UniForm 지원 예시를 살펴보겠습니다.예시: 메타데이터 위치를 지정하여 BigQuery에서 Delta Lake를 Iceberg로 읽기
기존 카탈로그에서 Iceberg를 읽을 때, BigQuery는 최신 Iceberg 스냅샷을 나타내는 JSON 파일에 대한 포인터를 제공해야 합니다(BigQuery 문서 참조). 예를 들면 다음과 같습니다: BigQuery에서:delta_uniform_iceberg.metadata_location 필드에 최신 Iceberg 스냅샷의 메타데이터 위치가 포함되어 있습니다.
UI 또는 API 방법으로 얻은 위치를 앞서 언급한 BigQuery 명령에 붙여넣으면, BigQuery는 해당 스냅샷을 Iceberg로 읽습니다.
테이블이 업데이트되면 최신 데이터를 읽기 위해 BigQuery에 업데이트된 메타데이터 위치를 제공해야 합니다. 프로덕션 사용 사례의 경우, Delta UniForm 테이블에 쓸 때마다 최신 Iceberg 메타데이터 경로(들)로 BigQuery를 업데이트하는 단계를 수집 파이프라인에 추가해야 합니다. 이 메타데이터 경로 업데이트의 필요성은 이 방식의 일반적인 제한 사항이며, UniForm에만 한정된 것이 아닙니다.
예시: REST Catalog API를 통해 Trino에서 Delta Lake를 Iceberg로 읽기
이제 Unity Catalog의 Iceberg REST Catalog API를 사용하여 Trino를 통해 앞서 만든 동일한 Delta UniForm 테이블을 읽어 보겠습니다.참고 참고: Trino는 Delta 테이블을 직접 지원하므로 Trino에서 Delta 테이블을 읽기 위해 UniForm이 반드시 필요한 것은 아닙니다. 이 예시는 UniForm이 오픈소스 생태계에서 상호운용성을 어떻게 더 확장하는지를 보여주기 위한 것입니다.Trino를 설정한 후,
etc/catalog/iceberg.properties 파일을 업데이트하여 Unity Catalog의 Iceberg REST API Catalog 엔드포인트를 사용하도록 Trino를 구성할 수 있습니다:
UNITY_CATALOG_ICEBERG_URL— Unity Catalog의 Iceberg REST API 엔드포인트 URL로, 다음 형태를 취합니다:https://{DATABRICKS_WORKSPACE_URL}/api/2.1/unity-catalog/icebergDATABRICKS_WORKSPACE_URL— 웹 브라우저에서 Databricks 워크스페이스로 이동하면 확인할 수 있는 워크스페이스 URL로,mydatabricksworkspace.cloud.databricks.com/?o=1231231231231231형태입니다.
PERSONAL_ACCESS_TOKEN— 이 지침에 따라 Databricks 워크스페이스에서 생성할 수 있는 Databricks Personal Access Token
Delta UniForm의 영향
Preview 기간 동안 이미 많은 고객이 Delta UniForm을 통해 오픈 데이터 레이크하우스 상호운용성을 향해 빠르게 나아갈 수 있도록 지원했습니다. 조직들은 Delta Lake에 한 번 쓰고, ETL, BI, AI 등 다양한 워크로드에 걸쳐 최적의 성능, 비용 효율성, 데이터 유연성을 달성하면서 이 데이터에 어떤 방식으로든 액세스할 수 있습니다 — 비용이 많이 들고 복잡한 마이그레이션의 부담 없이 말입니다.“Instacart에서 우리의 비전은 모든 컴퓨팅 플랫폼과 상호운용 가능한 단일 데이터 복사본을 가진 오픈 데이터 레이크하우스를 보유하는 것입니다. Delta UniForm은 그 목표에 있어 핵심적입니다. Delta UniForm을 통해 Delta Lake 또는 Iceberg로 읽을 수 있는 테이블을 빠르고 쉽게 생성하여 에코시스템의 모든 도구와의 상호운용성을 실현할 수 있습니다.” — Instacart의 시니어 스태프 소프트웨어 엔지니어 Doug Hyde가 Delta UniForm 경험을 공유하며Databricks의 사명은 데이터 팀이 세상에서 가장 어려운 문제를 해결할 수 있도록 돕는 것이며, 이는 데이터 복사본을 만들 필요 없이 적합한 작업에 적합한 도구를 사용할 수 있는 것에서 시작합니다. Delta UniForm이 가져오는 상호운용성 개선에 기대가 크며, 앞으로도 수년간 이 분야에 지속적으로 투자할 것입니다. Delta UniForm은 Delta Lake 3.0 미리 보기 릴리스 후보의 일부로 제공됩니다. Databricks 고객은 또한 Databricks Runtime 버전 13.2 또는 Databricks SQL 2023.35 미리 보기 채널로 Delta UniForm을 미리 사용해볼 수 있습니다.