Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Foundry의 Iceberg 테이블

Apache Iceberg는 정형 데이터를 위한 공개 테이블 형식과 메타데이터 명세입니다. 데이터 파일과 테이블 상태를 분리하여 관리하며 Spark, Flink, PyIceberg, Trino와 PrestoDB 같은 엔진 및 클라이언트에서 사용할 수 있습니다. Databricks와 Snowflake 같은 외부 플랫폼도 Iceberg 기반 연동을 제공합니다.

Foundry에서는 Iceberg 테이블을 기존 데이터셋과 다른 리소스 유형으로 사용합니다. 행 수준 DELETE, UPDATE, MERGE INTO, 변경 로그 기반 증분 처리와 파일 컴팩션이 필요하거나 외부 Iceberg 엔진과 데이터를 공유해야 할 때 검토합니다. 모든 데이터셋 기능이 동일하게 제공되는 것은 아니므로 데이터셋과의 차이를 함께 확인합니다.

REST 카탈로그

Foundry는 Iceberg REST Catalog 명세를 구현합니다. 외부 엔진은 이 카탈로그를 통해 Foundry의 Iceberg 테이블을 읽고 쓸 수 있습니다. Foundry가 외부 Iceberg 카탈로그에 연결하여 가상 테이블을 사용하는 방향도 지원합니다.

카탈로그는 테이블의 스키마, 상태와 데이터 파일 위치를 관리합니다. Foundry의 데이터셋 애플리케이션 Details에서는 Iceberg의 네이티브 테이블 메타데이터 JSON도 확인할 수 있습니다.

관리형 테이블과 가상 테이블

유형카탈로그와 저장소
관리형 Iceberg 테이블Foundry 카탈로그가 관리합니다. 파일은 Foundry 관리 저장소 또는 고객의 BYOB 버킷에 둘 수 있습니다.
가상 Iceberg 테이블외부 저장소의 파일을 외부 카탈로그가 관리합니다. Glue, Horizon, Polaris, Unity 등의 카탈로그를 연결합니다.

고객 버킷에 저장한다는 사실만으로 가상 테이블이 되는 것은 아닙니다. 카탈로그를 누가 관리하는지가 유형을 나누는 기준입니다. 저장 구조에 세 가지 조합과 암호화 조건을 설명합니다.

시작할 때 결정할 사항

관리자는 먼저 Control Panel 설정에서 기능 활성화, 기본 저장소와 암호화를 정합니다. 고객 버킷을 사용하면 BYOB 설정에서 인증, 권한과 소스를 준비합니다. 프로젝트별로 저장 위치와 암호화를 다르게 적용할 수 있지만 변경된 기본값이 기존 테이블을 자동 이전하지는 않습니다.

파이프라인 작성에서는 Python의 transforms-tables와 Pipeline Builder를 사용합니다. Data Connection 동기화로 외부 데이터를 직접 수집하거나 Jupyter에서 대화형으로 사용할 수도 있습니다. 전체를 매번 다시 쓰지 않으려면 증분 처리와 변경 로그 기반 CDC를 검토합니다. 엔진별 입출력과 변경 적용 예제는 파이프라인 개요에서 선택할 수 있습니다.

테이블을 운영하면서 작은 파일이나 오래된 이력이 늘어나면 유지보수 작업으로 컴팩션, 스냅샷 만료와 고아 파일 정리를 구성합니다. 메타데이터에서 이력을 없애는 것과 실제 파일을 삭제하는 시점은 보존 정책에서 구분합니다.

테이블 동작과 거버넌스

Foundry의 작업 트랜잭션, 브랜치 확장과 관리형 유지보수는 Foundry 카탈로그를 사용하는 테이블에 적용됩니다. 외부 카탈로그가 관리하는 가상 테이블에 같은 카탈로그 확장이나 재해 복구 삭제 정책이 자동 적용된다고 가정하지 않습니다.

  • 형식 버전: v2와 v3의 기본값, 암호화와 지원 자료형을 확인합니다.
  • 트랜잭션: Foundry 작업 안의 전체 커밋과 읽기 일관성을 설명합니다.
  • 브랜치: 스키마, 파티션 명세와 정렬 순서를 브랜치별로 격리합니다.
  • 테이블 속성: Foundry 기본값과 수정할 수 없는 속성을 구분합니다.
  • 스냅샷: 테이블 이력과 통계, Append/Overwrite/Delete/Replace를 해석합니다.
  • 권한과 보안 표지: 리소스 작업 권한, 브랜치 보호와 테이블 전체 접근 제한을 다룹니다.
  • 자원 사용량: 연산 및 저장소 사용량의 집계 범위를 확인합니다.

외부 클라이언트 연결

외부 클라이언트에는 카탈로그에 인증할 API 토큰 또는 OAuth2 구성과, 카탈로그 엔드포인트 및 실제 저장소 버킷 양쪽에 대한 네트워크 접근이 필요합니다. 외부에서 쓰는 경우 기본적으로 표준 Iceberg 클라이언트의 커밋 및 브랜치 동작이 적용됩니다. Foundry 빌드의 작업 단위 트랜잭션과 같다고 가정하지 않습니다. 외부 클라이언트의 브랜치 격리는 X-PLTR-Branch 설정으로 선택합니다.

클라이언트 인증과 네트워크 설정을 준비한 뒤 로컬 Jupyter 또는 Snowflake 카탈로그 통합으로 연결할 수 있습니다. 메타데이터 조회와 실제 저장소 파일 읽기를 나누어 확인하고, 생성 및 쓰기 기능의 형식 버전 지원도 구분합니다.