구체화된 뷰 - AWS Lake Formation

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

구체화된 뷰

AWS Glue 데이터 카탈로그에서 구체화된 보기는 SQL 쿼리의 사전 계산된 결과를 Apache Iceberg 형식으로 저장하는 관리형 테이블입니다. 쿼리에 액세스할 때마다 쿼리를 실행하는 표준 Data Catalog 뷰와 달리 구체화된 뷰는 쿼리 결과를 물리적으로 저장하고 기본 소스 테이블이 변경될 때 업데이트합니다. Amazon Athena, Amazon EMR 또는에서 Apache Spark 버전 3.5.6 이상을 사용하여 구체화된 뷰를 생성할 수 있습니다 AWS Glue.

구체화된 뷰는 AWS Glue 데이터 카탈로그에 등록된 Apache Iceberg 테이블을 참조하며, 사전 계산된 데이터는 Amazon S3 Tables 버킷 또는 Amazon S3 범용 버킷의 Apache Iceberg 테이블로 저장되므로 Amazon Athena, Amazon Redshift 및 타사 Iceberg 호환 엔진을 비롯한 여러 쿼리 엔진에서 액세스할 수 있습니다.

구체화된 뷰를 다른 뷰 유형과 구분

구체화된 뷰는 기본적인 방식으로 AWS Glue 데이터 카탈로그 뷰, Apache Spark 뷰 및 Amazon Athena 뷰와 다릅니다. Data Catalog 뷰는 액세스할 때마다 SQL 쿼리 정의를 실행하는 가상 테이블이지만 구체화된 뷰는 사전 계산된 쿼리 결과를 물리적으로 저장합니다. 따라서 중복 계산이 필요 없으며 자주 액세스하는 복잡한 변환에 대한 쿼리 성능이 크게 향상됩니다.

구체화된 뷰는 AWS Glue ETL 또는 사용자 지정 Spark 작업으로 구축된 기존 데이터 변환 파이프라인과도 다릅니다. 변경 감지, 증분 업데이트 및 워크플로 오케스트레이션을 처리하는 사용자 지정 코드를 작성하는 대신 표준 SQL 구문을 사용하여 구체화된 뷰를 정의합니다. 데이터 카탈로그는 AWS Glue 소스 테이블을 자동으로 모니터링하고, 변경 사항을 감지하고, 완전 관리형 컴퓨팅 인프라를 사용하여 구체화된 뷰를 새로 고칩니다.

사용 사례

구체화된 뷰의 중요한 사용 사례는 다음과 같습니다.

  • 복잡한 분석 쿼리 가속화 - 비용이 많이 드는 조인, 집계 및 창 함수를 미리 계산하는 구체화된 뷰를 생성합니다. Spark 엔진은 사전 계산된 결과를 사용하기 위해 후속 쿼리를 자동으로 다시 작성하여 쿼리 지연 시간과 컴퓨팅 비용을 줄입니다.

  • 데이터 변환 파이프라인 간소화 - 변경 감지, 증분 업데이트 및 워크플로 오케스트레이션을 처리하는 복잡한 ETL 작업을 간단한 SQL 기반 구체화된 뷰 정의로 대체합니다. AWS Glue 데이터 카탈로그는 모든 운영 복잡성을 자동으로 관리합니다.

  • 관리형 데이터 액세스를 통한 셀프 서비스 분석 활성화 - 원시 데이터를 비즈니스용 데이터 세트로 변환하는 큐레이트된 구체화된 뷰를 생성합니다. 사용자에게 기본 소스 테이블을 노출하지 않고 구체화된 뷰에 대한 액세스 권한을 부여하여 보안 관리를 간소화하는 동시에 셀프 서비스 분석을 강화합니다.

  • 기계 학습을 위한 특성 엔지니어링 최적화 - ML 모델에 대한 특성 변환을 구현하는 구체화된 뷰를 정의합니다. 자동 새로 고침 기능은 소스 데이터가 발전함에 따라 특성 저장소를 최신 상태로 유지하는 동시에 증분 새로 고침은 컴퓨팅 비용을 최소화합니다.

  • 효율적인 데이터 공유 구현 - 특정 소비자의 데이터를 필터링하고 변환하는 구체화된 뷰를 생성합니다. 를 사용하여 계정 및 리전 간에 구체화된 보기를 공유 AWS Lake Formation하므로 중앙 집중식 거버넌스를 유지하면서 데이터 중복이 필요하지 않습니다.

주요 개념

자동 새로 고침

자동 새로 고침은 소스 테이블을 지속적으로 모니터링하고 정의한 일정에 따라 구체화된 뷰를 업데이트하는 기능입니다. 구체화된 뷰를 생성할 때 간격이 1시간인 시간 기반 예약을 사용하여 새로 고침 빈도를 지정할 수 있습니다. AWS Glue 데이터 카탈로그는 관리형 Spark 컴퓨팅 인프라를 사용하여 백그라운드에서 새로 고침 작업을 실행하여 변경 감지 및 증분 업데이트의 모든 측면을 투명하게 처리합니다.

새로 고침 간격 간에 소스 데이터가 변경되면 구체화된 보기가 일시적으로 오래됩니다. 구체화된 뷰에 직접 액세스하는 쿼리는 예약된 다음 새로 고침이 완료될 때까지 오래된 결과를 반환할 수 있습니다. 최신 데이터에 즉시 액세스해야 하는 시나리오의 경우 REFRESH MATERIALIZED VIEW SQL 명령을 사용하여 수동 새로 고침을 실행할 수 있습니다.

증분 새로 고침

증분 새로 고침은 전체 구체화된 뷰를 다시 계산하는 대신 마지막 새로 고침 이후 소스 테이블에서 변경된 데이터만 처리하는 최적화 기법입니다. AWS Glue 데이터 카탈로그는 Apache Iceberg의 메타데이터 계층을 활용하여 소스 테이블의 변경 사항을 효율적으로 추적하고 구체화된 뷰에서 업데이트가 필요한 부분을 결정합니다.

이 접근 방식은 전체 새로 고침 작업에 비해 컴퓨팅 비용과 새로 고침 기간을 크게 줄입니다. 특히 새로 고침 주기 사이에 데이터 변경 비율이 적은 대규모 데이터 세트의 경우 더욱 그렇습니다. 증분 새로 고침 메커니즘은 자동으로 작동하므로 변경된 데이터를 감지하거나 처리하기 위해 사용자 지정 로직을 작성할 필요가 없습니다.

자동 쿼리 재작성

자동 쿼리 재작성은 Amazon Athena, Amazon EMR 및 전반의 Spark 엔진에서 사용할 수 있는 쿼리 최적화 기능입니다 AWS Glue. 기본 테이블에 대해 쿼리를 실행하면 Spark 옵티마이저는 쿼리 계획을 분석하고 사용 가능한 구체화된 뷰가 쿼리를 더 효율적으로 충족할 수 있는지 여부를 자동으로 결정합니다. 적절한 구체화된 뷰가 있는 경우 최적화 프로그램은 기본 테이블을 처리하는 대신 미리 계산된 결과를 사용하도록 쿼리를 투명하게 다시 작성합니다.

이 최적화는 애플리케이션 코드 또는 쿼리 문을 변경할 필요 없이 수행됩니다. Spark 옵티마이저는 구체화된 뷰가 최신이고 정확한 결과를 생성할 수 있는 경우에만 자동 쿼리 재작성이 적용되도록 합니다. 구체화된 뷰가 오래되었거나 쿼리 요구 사항과 완전히 일치하지 않는 경우 최적화 프로그램은 기본 테이블에 대해 원래 쿼리 계획을 실행하여 성능보다 정확성을 우선시합니다.

정의자 역할 보기

구체화된 뷰는 뷰 정의자 역할이라고 하는 뷰를 생성한 IAM 역할의 권한을 기반으로 작동합니다. 정의자 역할은 구체화된 뷰 정의에서 참조되는 모든 기본 테이블에 대한 읽기 액세스 권한이 있어야 하며 대상 데이터베이스에 대한 테이블 권한을 생성해야 합니다. Data Catalog는 구체화된 뷰를 새로 고칠 때 AWS Glue 정의자 역할을 수임하여 소스 테이블에 액세스하고 업데이트된 결과를 작성합니다.

이 보안 모델을 사용하면 사용자에게 기본 소스 테이블에 대한 직접 권한을 부여하지 않고 구체화된 뷰에 대한 액세스 권한을 부여할 수 있습니다. 뷰 정의자 역할이 기본 테이블에 대한 액세스 권한을 상실하면 권한이 복원될 때까지 후속 새로 고침 작업이 실패합니다.

구체화된 뷰에 대한 권한

구체화된 뷰를 생성하고 관리하려면 AWS Lake Formation 권한을 구성해야 합니다. 구체화된 뷰를 생성하는 IAM 역할(정의자 역할)에는 소스 테이블 및 대상 데이터베이스에 대한 특정 권한이 필요합니다.

정의자 역할에 필요한 권한

정의자 역할에는 다음과 같은 Lake Formation 권한이 있어야 합니다.

  • 소스 테이블에서 - 행, 열 또는 셀 필터가 없는 SELECT 또는 ALL 권한

  • 대상 데이터베이스에서 - CREATE_TABLE 권한

  • AWS Glue 데이터 카탈로그에서 - GetTable 및 CreateTable API 권한

구체화된 뷰를 생성하면 정의자 역할의 ARN이 뷰 정의에 저장됩니다. AWS Glue 데이터 카탈로그는 자동 새로 고침 작업을 실행할 때이 역할을 수임합니다. 정의자 역할이 소스 테이블에 대한 액세스 권한을 상실하면 권한이 복원될 때까지 새로 고침 작업이 실패합니다.

AWS Glue 작업에 대한 IAM 권한

AWS Glue 작업의 IAM 역할에는 다음 권한이 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetCatalogs", "glue:GetTable", "glue:GetTables", "glue:CreateTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetDatabase", "glue:GetDatabases", "cloudwatch:PutMetricData" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:*:/aws-glue/*" ] }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }

구체화된 뷰 자동 새로 고침에 사용하는 역할에는 역할에 대한 iam:PassRole 권한이 있어야 합니다.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::111122223333:role/materialized-view-role-name" ] } ] }

Glue가 구체화된 뷰를 자동으로 새로 고치도록 하려면 서비스가 역할을 수임할 수 있도록 하는 다음과 같은 신뢰 정책도 역할에 있어야 합니다.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::111122223333:role/materialized-view-role-name" ] } ] }

구체화된 뷰가 S3 Tables 버킷에 저장된 경우 역할에 다음 권한도 추가해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3tables:PutTableMaintenanceConfiguration" ], "Resource": "arn:aws:s3tables:*:123456789012:*" } ] }

구체화된 뷰에 대한 액세스 권한 부여

다른 사용자에게 구체화된 뷰를 쿼리할 수 있는 액세스 권한을 부여하려면 AWS Lake Formation 를 사용하여 구체화된 뷰 테이블에 대한 SELECT 권한을 부여합니다. 사용자는 기본 소스 테이블에 직접 액세스할 필요 없이 구체화된 뷰를 쿼리할 수 있습니다.

Lake Formation 권한 구성에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 데이터 카탈로그 리소스에 대한 권한 부여 및 취소를 참조하세요.

구체화된 뷰 생성 및 관리

Spark 엔진의 CREATE MATERIALIZED VIEW SQL 문을 사용하여 구체화된 뷰를 생성합니다. 뷰 정의는 변환 로직, 대상 데이터베이스 및 테이블 이름, 선택적 새로 고침 구성을 정의하는 SQL 쿼리를 지정합니다. 집계, 여러 테이블의 조인, 필터, 창 함수 등 복잡한 변환을 정의할 수 있습니다.

CREATE MATERIALIZED VIEW sales_summary AS SELECT region, product_category, SUM(sales_amount) as total_sales, COUNT(DISTINCT customer_id) as unique_customers FROM sales_transactions WHERE transaction_date >= current_date - interval '90' day GROUP BY region, product_category;

자동 새로 고침을 구성하려면 보기 정의에 새로 고침 일정을 포함합니다.

CREATE MATERIALIZED VIEW sales_summary SCHEDULE REFRESH EVERY 1 HOUR AS SELECT region, product_category, SUM(sales_amount) as total_sales FROM sales_transactions GROUP BY region, product_category;

REFRESH MATERIALIZED VIEW 명령을 사용하여 언제든지 구체화된 뷰를 수동으로 새로 고칠 수 있습니다.

REFRESH MATERIALIZED VIEW sales_summary;

기존 구체화된 뷰의 새로 고침 일정을 수정하려면 ALTER MATERIALIZED VIEW 문을 사용합니다.

ALTER MATERIALIZED VIEW sales_summary ADD SCHEDULE REFRESH EVERY 2 HOURS;

중첩된 구체화된 뷰

다른 구체화된 뷰를 기본 테이블로 참조하는 구체화된 뷰를 생성하여 다단계 데이터 변환을 활성화할 수 있습니다. 중첩된 구체화된 뷰를 생성하면 AWS Glue 데이터 카탈로그는 종속성을 추적하고 구체화된 뷰 계층 구조를 통해 업데이트를 자동으로 전파합니다. 기본 구체화된 뷰가 새로 고쳐지면 그에 의존하는 모든 다운스트림 구체화된 뷰가 그에 따라 업데이트됩니다.

이 기능을 사용하면 복잡한 변환을 논리적 단계로 분해하여 유지 관리를 개선하고 데이터 최신성 요구 사항에 따라 변환 계층을 선택적으로 새로 고칠 수 있습니다.

스토리지 및 데이터 액세스

구체화된 뷰는 사전 계산된 결과를 AWS 계정 내의 S3 Tables 버킷 또는 범용 S3 버킷에 Apache Iceberg 테이블로 저장합니다. AWS Glue 데이터 카탈로그는 S3 Tables의 자동 최적화 기능을 통해 압축 및 스냅샷 보존을 포함하여 Iceberg 테이블 유지 관리의 모든 측면을 관리합니다.

구체화된 뷰는 Iceberg 테이블로 저장되므로 Amazon Athena, Amazon Redshift 및 타사 분석 플랫폼을 포함한 모든 Iceberg 호환 엔진에서 직접 읽을 수 있습니다. 이러한 다중 엔진 접근성을 통해 데이터 복제 또는 형식 변환 없이 전체 분석 에코시스템에서 사전 계산된 데이터에 계속 액세스할 수 있습니다.

권한과 AWS Lake Formation 통합

AWS Lake Formation 를 사용하여 구체화된 뷰에 대한 세분화된 권한을 관리할 수 있습니다. 뷰 생성자는 구체화된 뷰의 소유자가 되며 AWS Lake Formation명명된 리소스 메서드 또는 LF 태그를 사용하여 다른 사용자 또는 역할에 권한을 부여할 수 있습니다.

구체화된 뷰에 대한 SELECT 권한을 사용자에게 부여하면 기본 소스 테이블에 액세스할 필요 없이 미리 계산된 결과를 쿼리할 수 있습니다. 이 보안 모델은 데이터 액세스 관리를 간소화하고 최소 권한 원칙을 구현하여 사용자에게 필요한 특정 데이터 변환에만 액세스할 수 있는 권한을 제공합니다.

AWS Lake Formation의 교차 AWS 계정 공유 기능을 사용하여 계정, AWS 조직 및 조직 단위 간에 구체화된 보기를 공유할 수 있습니다. 리소스 링크를 사용하여 AWS 리전 간에 구체화된 뷰에 액세스하여 분산 데이터 액세스를 통해 중앙 집중식 데이터 거버넌스를 활성화할 수도 있습니다.

모니터링 및 디버깅

AWS Glue 데이터 카탈로그는 구체화된 모든 보기 새로 고침 작업 및 관련 지표를 Amazon CloudWatch에 게시합니다. CloudWatch 지표를 통해 새로 고침 시작 시간, 종료 시간, 기간, 처리된 데이터 볼륨 및 새로 고침 상태를 모니터링할 수 있습니다. 새로 고침 작업이 실패하면 오류 메시지와 진단 정보가 CloudWatch Logs에 캡처됩니다.

새로 고침 작업이 예상 기간을 초과하거나 반복적으로 실패할 때 알림을 받도록 CloudWatch 경보를 설정할 수 있습니다. 또한 AWS Glue 데이터 카탈로그는 성공한 새로 고침 실행과 실패한 새로 고침 실행 모두에 대해 변경 이벤트를에 게시하므로 구체화된 보기 작업을 더 광범위한 워크플로 자동화에 통합할 수 있습니다.

구체화된 뷰의 현재 상태를 확인하려면 기한 경과 상태, 마지막 새로 고침 타임스탬프 및 새로 고침 일정 구성을 포함한 메타데이터를 반환하는 DESCRIBE MATERIALIZED VIEW SQL 명령을 사용합니다.

새로 고침 작업 관리

수동 새로 고침 시작

예약된 간격 밖에서 즉시 새로 고침을 트리거합니다.

필수 권한: API 호출에 사용되는 AWS 자격 증명에는 구체화된 뷰에 대한 glue:GetTable 권한이 있어야 합니다.

S3 테이블 카탈로그의 경우:

aws glue start-materialized-view-refresh-task-run \ --catalog-id <ACCOUNT_ID>:s3tablescatalog/<CATALOG_NAME> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME>

루트 카탈로그의 경우:

aws glue start-materialized-view-refresh-task-run \ --catalog-id <ACCOUNT_ID> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME>

새로 고침 상태 확인

특정 새로 고침 작업의 상태를 가져옵니다.

aws glue get-materialized-view-refresh-task-run \ --catalog-id <CATALOG_ID> \ --materialized-view-refresh-task-run-id <TASK_RUN_ID>

새로 고침 기록 나열

구체화된 보기에 대한 모든 새로 고침 작업 보기:

aws glue list-materialized-view-refresh-task-runs \ --catalog-id <CATALOG_ID> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME>
참고

S3 테이블<ACCOUNT_ID>:s3tablescatalog/<CATALOG_NAME>의 경우를 사용하고 루트 카탈로그의 <ACCOUNT_ID> 경우를 사용합니다.

실행 중인 새로 고침 중지

진행 중인 새로 고침 작업 취소:

aws glue stop-materialized-view-refresh-task-run \ --catalog-id <CATALOG_ID> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME>

모니터링 및 문제 해결

구체화된 보기 새로 고침 작업을 모니터링하는 세 가지 방법이 있습니다.

CloudWatch 지표

CloudWatch에서 구체화된 모든 보기 새로 고침 작업에 대한 집계된 지표를 봅니다.

사용 가능한 지표:

  • AWS차원이 있는 /Glue 네임스페이스:

    • CatalogId: 카탈로그 식별자

    • DatabaseName: 구체화된 뷰가 포함된 데이터베이스

    • TableName: 구체화된 뷰 이름

    • TaskType: "MaterializedViewRefresh"로 설정

콘솔에서 보기:

  1. CloudWatch 콘솔 → 지표로 이동

  2. Select AWS/Glue 네임스페이스

  3. 차원별 필터링: CatalogId, DatabaseName, TableName, TaskType

  4. 작업 성공, 실패 및 기간에 대한 지표 보기

CloudWatch 지표 쿼리 예제:

{AWS/Glue,CatalogId,DatabaseName,TableName,TaskType} MaterializedViewRefresh

사용 AWS CLI:

aws cloudwatch get-metric-statistics \ --namespace AWS/Glue \ --metric-name <MetricName> \ --dimensions Name=CatalogId,Value=<CATALOG_ID> \ Name=DatabaseName,Value=<DATABASE_NAME> \ Name=TableName,Value=<TABLE_NAME> \ Name=TaskType,Value=MaterializedViewRefresh \ --start-time <START_TIME> \ --end-time <END_TIME> \ --period 3600 \ --statistics Sum \ --region <REGION>

CloudWatch Logs

개별 새로 고침 작업 실행에 대한 세부 실행 로그를 봅니다.

로그 그룹: /aws-glue/materialized-views/<task_run_id>

여기서 <task_run_id>는 UUID(예: abc12345-def6-7890-ghij-klmnopqrstuv)입니다.

로그 보기:

# List log streams for a task run aws logs describe-log-streams \ --log-group-name /aws-glue/materialized-views/<TASK_RUN_ID> \ --region <REGION> # Get log events aws logs get-log-events \ --log-group-name /aws-glue/materialized-views/<TASK_RUN_ID> \ --log-stream-name <LOG_STREAM_NAME> \ --region <REGION>

CloudWatch 콘솔에서:

  1. CloudWatch → 로그 그룹으로 이동

  2. /aws-glue/materialized-views/ 검색

  3. 작업 실행 ID가 인 로그 그룹 선택

  4. 세부 실행 로그, 오류 및 Spark 작업 출력 보기

알림

새로 고침 작업 상태 변경에 대한 실시간 알림을 받으려면 이벤트를 구독하세요.

사용 가능한 이벤트 유형:

  • Glue 구체화된 보기 새로 고침 작업이 시작됨

  • Glue 구체화된 뷰 새로 고침 작업 성공

  • Glue 구체화된 보기 새로 고침 작업 실패

  • Glue 구체화된 뷰 자동 새로 고침 호출 실패

규칙 생성:

aws events put-rule \ --name materialized-view-refresh-notifications \ --event-pattern '{ "source": ["aws.glue"], "detail-type": [ "Glue Materialized View Refresh Task Started", "Glue Materialized View Refresh Task Succeeded", "Glue Materialized View Refresh Task Failed", "Glue Materialized View Auto-Refresh Invocation Failure" ] }' \ --region <REGION>

대상 추가(예: SNS 주제):

aws events put-targets \ --rule materialized-view-refresh-notifications \ --targets "Id"="1","Arn"="arn:aws:sns:<REGION>:<ACCOUNT_ID>:<TOPIC_NAME>" \ --region <REGION>

새로 고침 상태 보기

AWS Glue API를 사용하여 구체화된 보기 새로 고침 작업의 상태를 확인합니다.

aws glue get-materialized-view-refresh-task-run \ --catalog-id <CATALOG_ID> \ --materialized-view-refresh-task-run-id <TASK_RUN_ID> \ --region <REGION>

또는 모든 최근 새로 고침 실행을 나열합니다.

aws glue list-materialized-view-refresh-task-runs \ --catalog-id <CATALOG_ID> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME> \ --region <REGION>

이는 다음을 보여줍니다.

  • 마지막 새로 고침 시간

  • 새로 고침 상태(SUCCEEDED, FAILED, RUNNING, STOPPED)

  • 작업 실행 ID

  • 오류 메시지(실패한 경우)

일반적인 새로 고침 상태:

  • 실행 중: 새로 고침 작업이 현재 실행 중입니다.

  • 성공: 새로 고침이 성공적으로 완료되었습니다.

  • FAILED: 새로 고침에 오류가 발생했습니다.

  • 중지됨: 새로 고침이 수동으로 취소됨

실패한 새로 고침 문제 해결:

새로 고침에 실패하면 다음을 확인합니다.

  1. IAM 권한: 정의자 역할이 모든 기본 테이블 및 구체화된 뷰 위치에 액세스할 수 있는지 확인합니다.

  2. 기본 테이블 가용성: 참조된 모든 테이블이 존재하고 액세스할 수 있는지 확인

  3. 쿼리 유효성: SQL 쿼리가 Spark SQL 언어에 유효한지 확인

  4. 리소스 제한: 계정의 동시 새로 고침 제한에 도달했는지 확인합니다.

GetMaterializedViewRefreshTaskRun API를 사용하여 자세한 오류 메시지를 검색합니다.

고려 사항 및 제한 사항

  • 구체화된 뷰는 AWS Glue 데이터 카탈로그에 기본 테이블로 등록된 Apache Iceberg 테이블만 참조할 수 있습니다.

  • 보기 생성 및 자동 쿼리 재작성은 Amazon Athena, Amazon EMR 및 AWS Glue (버전 5.1)에서 Apache Spark 버전 3.5.6 이상의 Spark 엔진에서만 사용할 수 있습니다.

  • 구체화된 뷰는 결국 기본 테이블과 일치합니다. 새로 고침 기간 동안 구체화된 뷰에 직접 액세스하는 쿼리는 오래된 데이터를 반환할 수 있습니다. 현재 데이터에 즉시 액세스하려면 수동 새로 고침을 실행합니다.

  • 최소 자동 새로 고침 간격은 1시간입니다. 더 자주 업데이트해야 하는 사용 사례의 경우 REFRESH MATERIALIZED VIEW 명령을 사용하여 프로그래밍 방식으로 수동 새로 고침을 실행합니다.

  • 쿼리 재작성은 성능보다 정확성을 우선시합니다. 구체화된 뷰가 오래되었거나 쿼리 요구 사항을 정확하게 충족할 수 없는 경우 Spark 엔진은 기본 테이블에 대해 원래 쿼리를 실행합니다.