기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Iceberg 테이블 형식 사양 버전 3 작업
Apache Iceberg 테이블 형식 사양의 최신 버전은 버전 3입니다. 이 버전은 성능을 개선하고 운영 오버헤드를 줄이면서 페타바이트 규모의 데이터 레이크를 빌드하기 위한 고급 기능을 소개합니다. 특히 배치 업데이트 및 규정 준수 삭제 작업과 관련하여 버전 2에서 발생하는 일반적인 성능 병목 현상을 해결합니다.
AWS 는 Iceberg 버전 3 사양에 정의된 대로 삭제 벡터 및 행 계보에 대한 지원을 제공합니다. 이러한 기능은 다음과 같은 Apache Spark에서 사용할 수 있습니다 AWS 서비스.
| AWS 서비스 | 버전 3 지원 |
|---|---|
|
Amazon EMR 릴리스 7.12 이상 |
|
|
예 |
|
|
AWS Glue: Iceberg REST API, 테이블 유지 관리 |
예 |
|
예 |
|
|
Amazon S3 테이블: Iceberg REST API, 테이블 유지 관리 |
예 |
|
아니요 |
버전 3의 주요 기능
삭제 벡터는 버전 2에서 사용된 위치 삭제 파일을 Puffin 파일로 저장된 효율적인 바이너리 형식으로 대체합니다. 이렇게 하면 임의 배치 업데이트 및 일반 데이터 보호 규정(GDPR) 규정 준수 삭제로 인한 쓰기 증폭이 제거되고 새로운 데이터 유지 관리 오버헤드가 크게 줄어듭니다. 고빈도 업데이트를 처리하는 조직은 쓰기 성능이 즉시 개선되고 작은 파일 수에서 스토리지 비용이 절감됩니다.
행 계보를 사용하면 행 수준에서 정확한 변경 내용 추적이 가능합니다. 다운스트림 시스템은 변경 사항을 점진적으로 처리하여 데이터 파이프라인 속도를 높이고 변경 데이터 캡처(CDC) 워크플로의 컴퓨팅 비용을 절감할 수 있습니다. 이 내장 기능을 사용하면 사용자 지정 변경 추적 구현이 필요하지 않습니다.
버전 호환성
버전 3은 버전 2 테이블과의 이전 버전과의 호환성을 유지합니다. AWS 서비스는 버전 2 및 버전 3 테이블을 동시에 지원하므로 다음을 수행할 수 있습니다.
-
버전 2 및 버전 3 테이블 모두에서 쿼리를 실행합니다.
-
데이터 재작성 없이 기존 버전 2 테이블을 버전 3으로 업그레이드합니다.
-
버전 2 및 버전 3 스냅샷에 적용되는 런타임 이동 쿼리입니다.
-
테이블 버전 간에 스키마 진화와 숨겨진 파티셔닝을 사용합니다.
버전 3 시작하기
사전 조건
버전 3 테이블로 작업하기 전에 다음이 있는지 확인합니다.
-
적절한 AWS Identity and Access Management (IAM) 권한이 AWS 계정 있는 .
-
하나 이상의 AWS 분석 서비스(Amazon EMR, AWS Glue Amazon SageMaker Unified Studio 노트북 또는 Amazon S3 Tables)에 대한 액세스.
-
테이블 데이터 및 메타데이터를 저장하기 위한 S3 버킷입니다.
-
자체 Iceberg 인프라를 구축하는 경우 Amazon S3 Tables 또는 범용 S3 버킷을 시작하기 위한 테이블 버킷입니다.
-
구성된 AWS Glue 카탈로그입니다.
버전 3 테이블 생성
새 테이블 생성
새 Iceberg 버전 3 테이블을 생성하려면 format-version 테이블 속성을 3으로 설정합니다.
Spark SQL 사용:
CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )
버전 2 테이블을 버전 3으로 업그레이드
데이터를 다시 작성하지 않고도 기존 버전 2 테이블을 버전 3으로 원자적으로 업그레이드할 수 있습니다.
Spark SQL 사용:
ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
중요
버전 3은 단방향 업그레이드입니다. 테이블을 버전 2에서 버전 3으로 업그레이드한 후에는 표준 작업을 통해 버전 2로 다시 다운그레이드할 수 없습니다.
업그레이드 중에 발생하는 일:
-
새 메타데이터 스냅샷은 원자적으로 생성됩니다.
-
기존 Parquet 데이터 파일은 재사용됩니다.
-
행 계보 필드가 테이블 메타데이터에 추가됩니다.
업그레이드 후:
-
다음 압축을 수행하면 이전 버전 2 삭제 파일이 제거됩니다.
-
새 수정 사항은 버전 3 삭제 벡터 파일을 사용합니다.
업그레이드는 행 계보 변경 추적 레코드의 과거 채우기를 수행하지 않습니다.
삭제 벡터 활성화
업데이트, 삭제 및 병합을 위해 삭제 벡터를 활용하려면 쓰기 모드를 구성합니다.
Spark SQL 사용:
ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
이러한 설정은 업데이트, 삭제 및 병합 작업이 전체 데이터 파일을 다시 쓰는 대신 삭제 벡터 파일을 생성하도록 합니다.
변경 추적에 행 계보 사용
버전 3은 행 계보 메타데이터 필드를 자동으로 추가하여 변경 사항을 추적합니다.
Spark SQL 사용:
# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence
_row_id 필드는 각 행을_last_updated_sequence_number 고유하게 식별하고 행이 마지막으로 수정된 시기를 추적합니다. 다음 필드를 사용하여 다음을 수행할 수 있습니다.
-
증분 처리를 위해 변경된 행을 식별합니다.
-
규정 준수를 위해 데이터 계보를 추적합니다.
-
CDC 파이프라인을 최적화합니다.
-
변경 사항만 처리하여 컴퓨팅 비용을 줄입니다.
버전 3 모범 사례
버전 3을 사용해야 하는 경우
다음과 같은 경우 버전 3으로 업그레이드하거나 버전 3으로 시작하는 것이 좋습니다.
-
배치 업데이트 또는 삭제를 자주 수행합니다.
-
GDPR 또는 규정 준수 삭제 요구 사항을 충족해야 합니다.
-
워크로드에는 고주파 업서트가 포함됩니다.
-
효율적인 CDC 워크플로가 필요합니다.
-
작은 파일에서 스토리지 비용을 줄이려고 합니다.
-
더 나은 변경 추적 기능이 필요합니다.
쓰기 성능 최적화
-
업데이트가 많은 워크로드에 대해 삭제 벡터를 활성화합니다.
SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' ) -
적절한 파일 크기를 구성합니다.
SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )
읽기 성능 최적화
-
증분 처리에 행 계보를 사용합니다.
-
복사하지 않고 시간 이동을 사용하여 기록 데이터에 액세스합니다.
-
더 나은 쿼리 계획을 위해 통계 수집을 활성화합니다.
마이그레이션 전략
버전 2에서 버전 3으로 마이그레이션할 때는 다음 모범 사례를 따르세요.
-
먼저 비프로덕션 환경에서 테스트하여 업그레이드 프로세스와 성능을 검증합니다.
-
활동이 적은 기간 동안 업그레이드하여 동시 작업에 미치는 영향을 최소화합니다.
-
초기 성능을 모니터링하고 업그레이드 후 지표를 추적합니다.
-
업그레이드 후 압축을 실행하여 삭제 파일을 통합합니다.
-
버전 3 기능을 반영하도록 팀 설명서를 업데이트합니다.
호환성 고려 사항
-
엔진 버전 - 테이블에 액세스하는 모든 엔진이 버전 3을 지원하는지 확인합니다.
-
타사 도구 - 업그레이드하기 전에 도구의 버전 3 호환성을 확인합니다.
-
백업 전략 - 스냅샷 기반 복구 절차를 테스트합니다.
-
모니터링 - 버전 3별 지표에 대한 모니터링 대시보드를 업데이트합니다.
문제 해결
일반적인 문제
오류: "format-version 3 is not supported"
-
엔진 버전이 버전 3을 지원하는지 확인합니다. 자세한 내용은이 섹션의 시작 부분에 있는 표를 참조하세요.
-
카탈로그 호환성을 확인합니다.
-
의 최신 버전을 사용하고 있는지 확인합니다 AWS 서비스.
업그레이드 후 성능 저하
-
압축 압축 실패가 없는지 확인합니다. 자세한 내용은 Amazon S3 S3 설명서의 S3 테이블에 대한 로깅 및 모니터링을 참조하세요.
-
삭제 벡터가 활성화되어 있는지 확인합니다. 다음 속성을 설정해야 합니다.
SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )다음 코드를 사용하여 테이블 속성을 확인할 수 있습니다.
DESCRIBE FORMATTED myns.orders_v3 -
파티션 전략을 검토합니다. 과도하게 파티셔닝하면 작은 파일이 생성될 수 있습니다. 다음 쿼리를 실행하여 테이블의 평균 파일 크기를 가져옵니다.
SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
타사 도구와의 비호환성
-
도구가 버전 3 사양을 지원하는지 확인합니다.
-
지원되지 않는 도구에 대해 버전 2 테이블을 유지 관리하는 것이 좋습니다.
-
버전 3 지원 타임라인은 도구 공급업체에 문의하세요.
도움말 가져오기
-
특정 문제는 AWS 서비스에 문의하세요AWS Support
. -
Iceberg 커뮤니티의 도움을 받으려면 Iceberg Slack 채널을
사용합니다. -
를 사용하여 분석 워크로드 AWS 서비스 를 관리하는 방법에 대한 자세한 내용은 의 분석을 AWS
참조하세요.
요금
가용성
Iceberg 테이블 형식 사양 버전 3 지원은 Amazon EMR AWS Glue, AWS Glue Data Catalog및 S3 Tables가 작동하는 모든 AWS 리전 에서 사용할 수 있습니다. 리전 가용성은 AWS 서비스 리전별