Apache Iceberg™ 테이블 자동 새로 고침

외부에서 관리되는 신규 또는 기존 Apache Iceberg™ 테이블 에 대한 자동 메타데이터 새로 고침을 구성합니다. Snowflake는 자동 새로 고침을 통해 서버리스 방식으로 지속적으로 외부 Iceberg 카탈로그를 폴링하여 메타데이터를 가장 최근의 원격 변경 사항과 동기화합니다.

다음 외부 카탈로그 옵션을 사용하는 테이블에는 자동 새로 고침이 지원됩니다.

  • AWS Glue

  • Apache Iceberg REST OpenAPI 사양을 준수하는 REST 카탈로그

  • Snowflake Open Catalog

카탈로그 통합에서 새로 고침 간격 설정

CREATE CATALOG INTEGRATION 명령을 실행할 때 REFRESH_INTERVAL_SECONDS 매개 변수의 값을 지정할 수 있습니다. 그렇지 않은 경우 기본 새로 고침 간격은 30초입니다. Snowflake는 카탈로그 통합으로 정의된 Iceberg 테이블이 있는 경우에만 외부 카탈로그를 폴링합니다.

다음 예제에서는 새로 고침 간격을 60초로 지정하여 AWS Glue에 대한 카탈로그 통합을 생성합니다.

CREATE CATALOG INTEGRATION auto_refresh_catalog_integration
  CATALOG_SOURCE = GLUE
  CATALOG_NAMESPACE = 'my_catalog_namespace'
  TABLE_FORMAT = ICEBERG
  GLUE_AWS_ROLE_ARN = 'arn:aws:iam::123456789123:role/my-catalog-role'
  GLUE_CATALOG_ID = '123456789123'
  ENABLED = TRUE
  REFRESH_INTERVAL_SECONDS = 60;
Copy

카탈로그 통합의 새로 고침 간격을 업데이트하려면 ALTER CATALOG INTEGRATION 명령을 사용합니다.

예:

ALTER CATALOG INTEGRATION auto_refresh_catalog_integration SET REFRESH_INTERVAL_SECONDS = 120;
Copy

자동 새로 고침 기능이 있는 Iceberg 테이블 만들기

CREATE ICEBERG TABLE 명령을 사용하여 Iceberg 테이블을 생성합니다. 테이블에 자동 메타데이터 새로 고침을 사용하도록 지정하려면 AUTO_REFRESH = TRUE 를 설정합니다.

다음 예제는 앞서 생성한 카탈로그 통합(auto_refresh_catalog_integration)과 AWS Glue의 CATALOG_TABLE_NAME 를 지정하여 AWS Glue를 카탈로그로 사용하는 Iceberg 테이블을 생성하는 예제입니다.

CREATE OR REPLACE ICEBERG TABLE auto_refresh_iceberg_table
  CATALOG_TABLE_NAME = 'myGlueTable'
  CATALOG = 'auto_refresh_catalog_integration'
  AUTO_REFRESH = TRUE;
Copy

자동 새로 고침 활성화 또는 취소

참고

  • 테이블이 Snowflake 버전 8.22 이전에 생성된 카탈로그 통합을 사용하는 경우 테이블에서 자동 새로 고침을 활성화하기 전에 ALTER CATALOG INTEGRATION 명령을 사용하여 REFRESH_INTERVAL_SECONDS 매개 변수를 설정해야 합니다.

  • Iceberg 테이블의 자동 새로 고침을 자주 켜고 끄면 테이블의 메타데이터 새로 고침이 느려질 수 있습니다.

ALTER ICEBERG TABLE 명령을 사용하여 기존 Iceberg 테이블에 대한 자동 새로 고침을 활성화하거나 해제할 수 있습니다.

예:

ALTER ICEBERG TABLE my_iceberg_table SET AUTO_REFRESH = FALSE;
Copy

자동화된 새로 고침 상태 검색

테이블의 자동 새로 고침 상태를 검색하려면 SYSTEM$AUTO_REFRESH_STATUS 함수를 호출합니다.

SELECT SYSTEM$AUTO_REFRESH_STATUS('my_iceberg_table');
Copy

이 함수는 Snowflake가 테이블의 새로 고침을 자동화하는 데 사용하는 파이프에 대한 세부 정보(예: 스냅샷 큐의 실행 상태 및 크기)를 반환합니다. 실행 상태가 RUNNING 이면 자동 새로 고침이 예상대로 실행되고 있음을 나타냅니다. 자세한 내용은 SYSTEM$AUTO_REFRESH_STATUS 섹션을 참조하십시오.

오류 복구

자동 새로 고침 프로세스 중에 오류가 발생하면 Snowflake는 실행 상태를 다음 값 중 하나로 업데이트합니다.

  • STALLED 는 Snowflake가 오류를 복구하려고 시도 중임을 의미합니다. 복구에 성공하면 자동 새로 고침 프로세스가 예상대로 계속 실행되고 실행 상태가 정상 RUNNING 상태로 다시 전환됩니다.

  • STOPPED 는 자동 새로 고침 프로세스에서 복구할 수 없는 오류가 발생하여 테이블에 대한 자동 새로 고침이 중지되었음을 의미합니다.

    예를 들어 Snowflake가 대상 스냅샷과 현재 스냅샷 사이에 직접적인 계보를 설정할 수 없는 경우 복구할 수 없는 오류가 발생할 수 있습니다.

    STOPPED 상태에서 복구하려면 다음 작업을 수행합니다.

    1. 테이블에서 자동 새로 고침을 끕니다.

    2. 수동으로 메타데이터 새로 고침을 수행합니다. 자세한 지침은 테이블 메타데이터 새로 고침 섹션을 참조하십시오.

    3. ALTER ICEBERG TABLE … SET AUTO_REFRESH 문을 사용하여 자동 새로 고침을 다시 활성화합니다.

    4. SYSTEM$AUTO_REFRESH_STATUS 함수를 호출하여 자동 새로 고침이 RUNNING 상태인지 확인합니다. 함수를 여러 번 호출하여 큐에 대기 중인 스냅샷 수(pendingSnapshotCount)가 점차 줄어드는 것을 확인할 수도 있습니다.

청구

Snowflake는 Snowpipe를 사용하여 Iceberg 테이블을 자동으로 새로 고치므로 자동 새로 고침에 대한 요금은 Snowpipe에서 청구하는 요금과 동일한 청구서 항목에 표시됩니다. 이 기능에는 Snowpipe 파일 요금이 부과되지 않습니다.

Account Usage PIPE_USAGE_HISTORY 뷰 를 확인하여 발생 요금을 예상할 수 있습니다. 자동 새로 고침 파이프는 NULL 파이프 이름 아래에 목록이 표시됩니다.

Iceberg 테이블 요금에 대한 자세한 내용은 Iceberg 테이블 청구 섹션을 참조하십시오.

고려 사항 및 제한 사항

자동 새로 고침을 사용하는 Iceberg 테이블로 작업하는 경우 다음 사항을 고려합니다.

  • 자동 새로 고침이 활성화되어 있으면 테이블 메타데이터를 수동으로 새로 고칠 수 없습니다. 수동 새로 고침을 수행하려면 먼저 자동 새로 고침을 해제합니다.

  • Snowflake 버전 8.22 이전에 생성된 카탈로그 통합의 경우 해당 카탈로그 통합에 의존하는 테이블에서 자동 새로 고침을 활성화하기 전에 REFRESH_INTERVAL_SECONDS 매개 변수를 수동으로 설정해야 합니다. 자세한 지침은 ALTER CATALOG INTEGRATION … SET AUTO_REFRESH 섹션을 참조하십시오.

  • 새 테이블 스냅샷이 현재 테이블 스냅샷의 직접적인 하위인지 확인합니다. 그렇지 않으면 자동 새로 고침이 STOPPED 상태로 전환됩니다. 이 문제가 발생할 때 자동 새로 고침을 복구하려면 오류 복구 섹션을 참조하십시오.

    • 테이블이 비어 있는 경우 자동 새로 고침을 활성화하기 전에 수동 새로 고침을 수행 하여 정의되지 않은 동작을 방지합니다.

  • 오브젝트 저장소에 카탈로그 통합 을 사용하는 경우 자동 새로 고침이 지원되지 않습니다.

  • 시퀀스 번호 열이 없는 Iceberg 버전 1 매니페스트는 현재 지원되지 않습니다.