View a markdown version of this page

Amazon Redshift에서 Iceberg 테이블 참조 - Amazon Redshift

Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 블로그 게시물을 참조하세요.

Amazon Redshift에서 Iceberg 테이블 참조

Amazon Redshift는 데이터 레이크에 저장된 Apache Iceberg 테이블을 참조하는 다양한 방법을 제공합니다. 외부 스키마를 사용하여 Iceberg 테이블이 포함된 데이터 카탈로그 데이터베이스에 대한 참조를 생성하거나, 세 부분으로 구성된 주석을 사용하여 자동 마운트된 카탈로그에 직접 액세스할 수 있습니다.

외부 스키마를 사용하여 Iceberg 테이블 참조

외부 스키마는 Amazon Redshift 내에서 데이터 카탈로그의 테이블을 참조하는 방법을 제공합니다. 외부 스키마를 생성할 때 Amazon Redshift 데이터베이스와 Iceberg 테이블이 포함된 특정 데이터 카탈로그 데이터베이스 간에 연결을 설정합니다.

Iceberg 테이블에 대한 외부 스키마를 생성하려면:

CREATE EXTERNAL SCHEMA schema_name FROM DATA CATALOG DATABASE 'glue_database_name' IAM_ROLE 'arn:aws:iam::account-id:role/role-name';

외부 스키마를 생성한 후 두 부분으로 구성된 주석을 사용하여 Iceberg 테이블을 쿼리할 수 있습니다.

SELECT * FROM schema_name.iceberg_table_name;

Iceberg 테이블을 로컬 Amazon Redshift 테이블과 조인할 수도 있습니다.

SELECT r.customer_id, i.order_date, r.customer_name FROM local_customers r JOIN schema_name.iceberg_orders i ON r.customer_id = i.customer_id;

자동 마운트된 카탈로그에서 세 부분으로 구성된 주석 사용

세 부분으로 구성된 주석을 사용하면 외부 스키마를 생성하지 않고도 자동 마운트된 카탈로그의 테이블을 직접 참조할 수 있습니다. 이 방법은 AWS Lake Formation과 페더레이션된 Amazon S3 테이블 버킷으로 작업할 때 특히 유용합니다. 데이터 카탈로그의 자동 마운트 설정에 대한 자세한 내용은 AWS Glue Data Catalog의 자동 탑재를 사용하여 Amazon Redshift에서 외부 객체 액세스 간소화를 참조하세요.

세 부분으로 구성된 주석의 구문은 다음과 같습니다.

"catalog_name".database_name.table_name

예를 들어, 자동 마운트된 Amazon S3 테이블 카탈로그에서 Iceberg 테이블을 쿼리하려면 다음을 수행합니다.

SELECT * FROM "my_table_bucket@s3tablescatalog".my_database.my_iceberg_table;

Amazon S3 테이블 버킷을 Amazon Redshift와 통합하는 방법에 대한 자세한 내용은 Amazon S3 사용 설명서S3 Tables를 Amazon Redshift와 통합을 참조하세요.

USE 문을 사용하여 기본 카탈로그 및 데이터베이스를 설정할 수도 있습니다.

USE "my_table_bucket@s3tablescatalog".my_database; SELECT * FROM my_iceberg_table;

스키마 확인을 위한 검색 경로를 설정하려면 다음을 수행합니다.

USE "my_table_bucket@s3tablescatalog"; SET search_path TO my_database; SELECT * FROM my_iceberg_table;

Iceberg 테이블 참조 모범 사례

Amazon Redshift에서 Iceberg 테이블을 참조할 때는 다음 모범 사례를 고려하세요.

  • 설명형 스키마 이름 사용 - 외부 스키마를 생성할 때 sales_data_lake 또는 customer_analytics와 같이 데이터의 소스와 목적을 명확하게 나타내는 이름을 사용합니다.

  • 테이블 통계 활용 - 쿼리 성능을 최적화하기 위해 AWS Glue를 사용하여 Iceberg 테이블에 대한 열 통계가 생성되었는지 확인합니다. Amazon Redshift는 쿼리 계획 및 최적화에 이러한 통계를 사용합니다.

  • 최신 데이터 여부 고려 - 쿼리하는 동안 다른 서비스에서 Iceberg 테이블을 업데이트할 수 있습니다. Amazon Redshift는 트랜잭션 일관성을 제공하므로 쿼리 실행 중에 데이터의 일관된 스냅샷을 볼 수 있습니다.

  • 적절한 IAM 권한 사용 - Amazon Redshift 클러스터 또는 작업 그룹에 Iceberg 테이블이 저장된 Amazon S3 위치와 데이터 카탈로그 메타데이터에 액세스하는 데 필요한 IAM 권한이 있는지 확인합니다.

  • 쿼리 성능 모니터링 - Amazon Redshift 쿼리 모니터링 기능을 사용하여 Iceberg 테이블에 대한 쿼리 성능을 추적하고 필요에 따라 최적화합니다.

일반적인 참조 패턴

다음 예제에서는 Iceberg 테이블을 참조하기 위한 일반적인 패턴을 보여줍니다.

여러 Iceberg 테이블에서 데이터 집계:

SELECT region, SUM(sales_amount) as total_sales, COUNT(*) as transaction_count FROM data_lake.sales_transactions WHERE transaction_date >= '2024-01-01' GROUP BY region ORDER BY total_sales DESC;

Iceberg 테이블을 로컬 Amazon Redshift 테이블과 조인:

SELECT c.customer_name, c.customer_tier, SUM(o.order_amount) as total_orders FROM customers c JOIN data_lake.order_history o ON c.customer_id = o.customer_id WHERE o.order_date >= CURRENT_DATE - INTERVAL '30 days' GROUP BY c.customer_name, c.customer_tier;

복잡한 쿼리와 함께 세 부분으로 구성된 주석 사용:

WITH recent_orders AS ( SELECT customer_id, order_date, order_amount FROM "analytics_bucket@s3tablescatalog".ecommerce.orders WHERE order_date >= CURRENT_DATE - INTERVAL '7 days' ) SELECT customer_id, COUNT(*) as order_count, AVG(order_amount) as avg_order_value FROM recent_orders GROUP BY customer_id HAVING COUNT(*) > 1;