Lakehouse Iceberg REST 카탈로그 설정

새 카탈로그의 경우 Lakehouse 런타임 카탈로그 내에 생성된 Iceberg 카탈로그 인스턴스를 사용하는 것이 좋습니다.

이 엔드포인트는 단일 정보 소스 역할을 하여 쿼리 엔진 간의 원활한 상호 운용성을 지원합니다. 이를 통해 Apache Spark와 같은 엔진이 Google Cloud Lakehouse 테이블을 검색, 읽기, 관리할 수 있습니다.

이 방법은 호환되는 OSS 또는 서드 파티 엔진을 사용하여 Cloud Storage의 데이터에 액세스하고 BigQuery를 비롯한 다른 엔진과의 상호 운용성이 필요한 경우에 적합합니다. 세부적인 액세스 제어를 위한 사용자 인증 정보 제공리전 간 복제 및 재해 복구와 같은 기능을 지원합니다.

반면 BigQuery용 맞춤 Apache Iceberg 카탈로그 엔드포인트는 이전 통합입니다. 기존 워크플로는 계속 사용할 수 있지만 REST 카탈로그는 더 표준화되고 기능이 풍부한 환경을 제공합니다.

시작하기 전에

계속하기 전에 Lakehouse 런타임 카탈로그Iceberg REST 카탈로그 엔드포인트 개요를 숙지하세요.

기존 버전 1 (V1) Apache Iceberg 테이블이 있는 경우 Apache Iceberg REST 카탈로그 엔드포인트와 함께 사용하기 전에 업그레이드해야 합니다. 자세한 내용은 Iceberg V1 테이블을 V2로 업그레이드를 참고하세요.

  1. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  2. BigLake API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할(roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기

    API 사용 설정

필요한 역할

Lakehouse 런타임 카탈로그에서 Apache Iceberg REST 카탈로그 엔드포인트를 사용하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 카탈로그 사용자 액세스, 스토리지 액세스, 카탈로그의 사용자 인증 정보 판매 모드 관리와 같은 관리 작업을 실행합니다.
  • BigLake 카탈로그에 테이블 등록: 프로젝트에 대한 BigLake 관리자 (roles/biglake.admin)
  • 인증 정보 판매 모드에서 테이블 데이터 읽기: 프로젝트의 BigLake 뷰어 (roles/biglake.viewer) Managed Service for Apache Spark, Managed Service for Apache Spark, Dataflow와 같은 쿼리 엔진을 사용하여 테이블 데이터를 읽는 경우 해당 엔진에서 작업을 실행하는 데 사용하는 서비스 계정에 이 역할을 부여합니다.
  • 인증 정보 제공 모드에서 테이블 데이터 쓰기: 프로젝트에 대한 BigLake 편집자 (roles/biglake.editor) Managed Service for Apache Spark, Managed Service for Apache Spark, Dataflow와 같은 쿼리 엔진을 사용하여 테이블 데이터를 작성하는 경우 해당 엔진에서 작업을 실행하는 데 사용하는 서비스 계정에 이 역할을 부여합니다.
  • 자격 증명 판매 모드에서 자동 프로비저닝된 Lakehouse 런타임 카탈로그 서비스 계정을 사용합니다. 연결된 모든 Cloud Storage 버킷에서 스토리지 객체 사용자 (roles/storage.objectUser) 카탈로그를 만든 후 연결된 모든 스토리지 버킷에 대한 스토리지 객체 사용자 역할 (roles/storage.objectUser)을 카탈로그의 자동 프로비저닝된 Lakehouse 런타임 카탈로그 서비스 계정에 명시적으로 부여합니다.
  • 사용자 인증 정보 벤더 제공 모드가 아닌 모드에서 카탈로그 리소스 및 테이블 데이터를 읽습니다.
  • 카탈로그 리소스를 관리하고 사용자 인증 정보 벤더 제공 모드가 아닌 모드에서 테이블 데이터를 작성합니다.
  • BigQuery 카탈로그 페더레이션으로 DML (데이터 조작 언어) 작업을 실행합니다 (일부 BigQuery 페더레이션 테이블은 변경할 수 없음, Iceberg 관리 테이블에서는 DML이 허용되지 않음).
    • 프로젝트에 대한 BigQuery 데이터 편집자 (roles/bigquery.dataEditor)
    • 연결된 모든 Cloud Storage 버킷에 대한 스토리지 관리자 (roles/storage.admin) Managed Service for Apache Spark와 같은 쿼리 엔진을 사용하여 DML 작업을 실행하는 경우 해당 엔진에서 작업을 실행하는 데 사용하는 서비스 계정에 이러한 역할을 부여하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

제한사항

Apache Iceberg REST 카탈로그 엔드포인트에는 다음과 같은 제한사항이 적용됩니다.

일반 제한사항

  • Apache Iceberg V2 테이블 (정식 버전) 및 V3 테이블 (미리보기)이 지원됩니다. Iceberg V1 테이블은 지원되지 않습니다. Apache Iceberg REST 카탈로그 엔드포인트로 기존 V1 테이블을 사용하려면 지원되는 버전으로 업그레이드해야 합니다.
  • Compute Engine 2.3 이미지 버전 2.3.16 이상에서 Managed Service for Apache Spark를 사용하는 경우 Trino는 BigQuery 카탈로그 제휴에서만 지원됩니다.
  • 인증 정보 벤더 제공 모드를 사용하는 경우 io-impl 속성을 org.apache.iceberg.gcp.gcs.GCSFileIO로 설정해야 합니다. 기본값인 org.apache.iceberg.hadoop.HadoopFileIO은 지원되지 않습니다.
  • 현재 계층적 네임스페이스 버킷은 사용자 인증 정보 제공 모드에서 지원되지 않습니다.

표 제한사항

  • BigQuery 데이터 정의 언어 (DDL) 또는 데이터 조작 언어 (DML) 문을 사용하여 Apache Iceberg REST 카탈로그 엔드포인트에서 테이블을 만들거나 수정할 수 없습니다. BigQuery API (bq 명령줄 도구 또는 클라이언트 라이브러리 사용)를 사용하여 이러한 테이블을 수정할 수 있지만, 이렇게 하면 외부 엔진과 호환되지 않는 변경사항이 발생할 수 있습니다.
  • Apache Iceberg REST 카탈로그 엔드포인트를 통해 관리되는 테이블은 행 수준 및 열 수준 보안과 같은 세분화된 액세스 제어 (FGAC)를 지원하지 않습니다.
  • Iceberg 테이블 속성 write.data.path 또는 write.metadata.path을 기본값이 아닌 값으로 설정하는 것은 금지되어 있습니다.
  • 표 경로는 상위 네임스페이스 경로 (예: gs://{namespace_path}/.../{table_name}) 내에 중첩되어야 합니다. 충돌을 방지하고 보안을 개선하기 위해 결과 위치에 무작위 문자열 접미사가 자동으로 추가됩니다 (예: gs://{namespace_path}/{table_name}/{random_suffix}).

데이터 제한사항

  • Parquet 파일만 지원됩니다. BigQuery에서 Parquet 파일을 처리하는 방법에 관한 자세한 내용은 Cloud Storage에서 Parquet 데이터 로드를 참고하세요.
  • Iceberg metadata.json 파일 크기는 1MB로 제한됩니다. 이 한도 상향을 요청하려면 Google 계정팀에 문의하세요.

쿼리 제한사항

  • Apache Iceberg 메타데이터 테이블 (예: .snapshots 또는 .files)은 5부분 이름 식별자를 사용하여 BigQuery에서 쿼리할 수 없습니다. Spark를 사용하여 이러한 테이블을 쿼리할 수 있습니다.

Iceberg REST 카탈로그 엔드포인트 설정

카탈로그를 설정하기 전에 Apache Iceberg REST 카탈로그 엔드포인트 개요를 읽고 리소스 계층 구조, 카탈로그 유형, 명명 구조를 이해하는 것이 좋습니다.

Lakehouse 런타임 카탈로그에서 Apache Iceberg REST 카탈로그 엔드포인트를 사용할 때 따라야 하는 일반적인 단계는 다음과 같습니다.

  1. Iceberg REST 카탈로그 엔드포인트 개요를 기반으로 카탈로그 유형을 선택합니다. 멀티 버킷 (bl://) 카탈로그 (권장) 또는 단일 버킷 (gs://) 카탈로그를 구성할 수 있습니다.
  2. 창고 위치를 가리키는 카탈로그를 만듭니다.
  3. Apache Iceberg REST 카탈로그 엔드포인트를 사용하도록 클라이언트 애플리케이션을 구성합니다.
  4. 네임스페이스 또는 스키마를 만들어 테이블을 정리합니다.
  5. 구성된 클라이언트를 사용하여 테이블을 만들고 쿼리합니다.

카탈로그 만들기

최종 사용자 사용자 인증 정보 또는 사용자 인증 정보 제공 모드를 사용하는 카탈로그를 만들 수 있습니다.

  • 최종 사용자 인증 정보를 사용하면 카탈로그에서 액세스하는 최종 사용자의 ID를 승인 확인을 위해 Cloud Storage에 전달합니다.

  • 사용자 인증 정보 판매는 Lakehouse 런타임 카탈로그 관리자가 Lakehouse 런타임 카탈로그 리소스에 대한 권한을 직접 제어할 수 있도록 하는 스토리지 액세스 위임 메커니즘으로, 카탈로그 사용자가 Cloud Storage 버킷에 직접 액세스할 필요가 없습니다. Google Cloud의 Lakehouse 관리자가 사용자에게 특정 데이터 파일에 대한 권한을 부여할 수 있습니다.

고려사항

카탈로그를 만들기 전에 위치 요구사항을 숙지하세요.

  • 네임스페이스를 만들면 카탈로그와 동일한 리전이 자동으로 사용됩니다.

  • 카탈로그에서 멀티 리전 버킷을 사용하고 이를 BigQuery 멀티 리전 (US 또는 EU)과 함께 사용하려면 카탈로그를 삭제하고 다시 만들어 기본 위치를 지정해야 합니다.

최종 사용자 인증 정보

콘솔

  1. Google Cloud 콘솔에서 Lakehouse 페이지를 엽니다.

    레이크하우스로 이동

  2. 카탈로그 만들기를 클릭합니다.

  3. 카탈로그 유형에서 Cloud Storage 버킷을 선택합니다.

  4. 카탈로그와 함께 사용할 Cloud Storage 버킷을 입력하거나 찾아봅니다(단일 버킷 (gs://) 카탈로그의 경우 버킷당 하나의 카탈로그만 있을 수 있으며 카탈로그 이름이 버킷 이름과 일치함).

  5. Authentication method(인증 방법)에서 End-user credentials(최종 사용자 인증 정보)을 선택합니다.

  6. 만들기를 클릭합니다.

gcloud

gcloud biglake iceberg catalogs create 명령어를 사용합니다.

다중 버킷 (bl://) 카탈로그 만들기 (권장)

다중 버킷 (bl://) 카탈로그를 만들려면 (권장) 다음 명령어를 실행합니다.

gcloud biglake iceberg catalogs create \
    CATALOG_NAME \
    --project PROJECT_ID \
    --catalog-type biglake \
    --default-location DEFAULT_LOCATION \
    [--restricted-locations RESTRICTED_LOCATIONS] \
    --credential-mode end-user \
    [--primary-location LOCATION]

단일 버킷 (gs://) 카탈로그 만들기

단일 버킷 (gs://) 카탈로그를 만들려면 다음 명령어를 실행합니다.

gcloud biglake iceberg catalogs create \
    CATALOG_NAME \
    --project PROJECT_ID \
    --catalog-type gcs-bucket \
    --credential-mode end-user

다음을 바꿉니다.

  • CATALOG_NAME: 카탈로그 이름입니다. 다중 버킷 (bl://) 카탈로그 (권장)의 경우 맞춤 카탈로그 이름입니다. 단일 버킷 (gs://) 카탈로그의 경우 REST 카탈로그와 함께 사용되는 Cloud Storage 버킷 ID와 일치합니다. 이 이름은 BigQuery에서 이러한 테이블을 쿼리할 때 카탈로그 식별자로도 사용됩니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • DEFAULT_LOCATION: 카탈로그의 기본 저장 위치를 지정합니다. 버킷 (gs://my-bucket) 또는 하위 경로 (gs://my-bucket/path)를 지정할 수 있습니다. 카탈로그의 모든 네임스페이스와 테이블은 지정된 경로 아래에 있어야 합니다. 예를 들어 gs://my-bucket/path를 지정하면 gs://my-bucket/another/path 아래에 네임스페이스나 테이블을 만들 수 없습니다.
  • RESTRICTED_LOCATIONS: (선택사항) 허용된 추가 저장소 위치의 쉼표로 구분된 목록입니다(gs://my-bucket-1/...,gs://my-bucket-2/... 형식). gs://my-bucket/path와 같은 경로를 지정하면 해당 버킷 내의 모든 네임스페이스 또는 테이블이 해당 경로 아래에 있어야 합니다. 기본 위치와 제한된 위치에 걸쳐 구성된 모든 클라우드 스토리지 위치는 동일한 지리적 지역 그룹 또는 관할권 (예: 미국, 유럽, 캐나다, 아시아)에 있어야 합니다. 예를 들어 미국에 있는 버킷과 유럽에 있는 버킷을 혼합할 수 없습니다. 지원되는 위치 목록은 레이크하우스 위치를 참고하세요. 보안 경고: 무단 사용자 인증 정보 노출을 방지하려면 다른 카탈로그와 중복되는 경로를 구성하지 마세요. 자세한 내용은 여러 버킷에 걸친 스토리지를 참고하세요.
  • LOCATION: (선택사항) BigQuery와의 상호 운용성을 보장하기 위한 카탈로그의 기본 리전입니다. 미국 리전 (예: US 또는 us-central1) 또는 EU 리전 (예: EU 또는 europe-west4)의 Cloud Storage 버킷의 경우 카탈로그에 액세스할 수 있고 해당 BigQuery 멀티 리전에서 쿼리할 수 있도록 각각 US 또는 EU를 지정합니다. 자세한 내용은 버킷 및 카탈로그 리전을 참고하세요.

사용자 인증 정보 벤더 제공 모드

카탈로그 관리자는 카탈로그를 만들거나 업데이트할 때 사용자 인증 정보 판매를 사용 설정합니다. 카탈로그 사용자는 Apache Iceberg REST 카탈로그 엔드포인트를 구성할 때 액세스 위임을 지정하여 범위가 축소된 스토리지 사용자 인증 정보를 반환하도록 Apache Iceberg REST 카탈로그 엔드포인트에 지시할 수 있습니다.

자동 프로비저닝된 Lakehouse 런타임 카탈로그 서비스 계정에는 연결된 모든 Cloud Storage 버킷에 대한 명시적 스토리지 객체 사용자 역할 (roles/storage.objectUser)이 필요합니다. 기본적으로 액세스 권한이 전혀 없습니다. 이 역할이 없으면 제공된 사용자 인증 정보에 스토리지 쓰기를 실행할 충분한 범위가 없습니다. gcloud 또는 Terraform과 같은 도구를 사용하는 경우 이 역할을 수동으로 부여해야 합니다.

콘솔

  1. Google Cloud 콘솔에서 Lakehouse 페이지를 엽니다.

    레이크하우스로 이동

  2. 카탈로그 만들기를 클릭합니다. 카탈로그 만들기 페이지가 열립니다.

  3. 카탈로그 유형에서 Cloud Storage 버킷을 선택합니다.

  4. 카탈로그와 함께 사용할 Cloud Storage 버킷을 입력하거나 찾아봅니다(단일 버킷 (gs://) 카탈로그의 경우 버킷당 하나의 카탈로그만 있을 수 있으며 카탈로그 이름이 버킷 이름과 일치함).

  5. 인증 방법에서 사용자 인증 정보 벤더 제공 모드를 선택합니다.

  6. 만들기를 클릭합니다.

    카탈로그가 생성되고 카탈로그 세부정보 페이지가 열립니다.

  7. 인증 방법에서 버킷 권한 설정을 클릭합니다.

  8. 대화상자에서 확인을 클릭합니다.

    이렇게 하면 연결된 모든 스토리지 버킷에 카탈로그의 서비스 계정에 스토리지 객체 사용자 역할이 있는지 확인합니다.

gcloud

gcloud biglake iceberg catalogs create 명령어를 사용합니다.

다중 버킷 (bl://) 카탈로그 만들기 (권장)

다중 버킷 (bl://) 카탈로그를 만들려면 (권장) 다음 명령어를 실행합니다.

gcloud biglake iceberg catalogs create \
    CATALOG_NAME \
    --project PROJECT_ID \
    --catalog-type biglake \
    --default-location DEFAULT_LOCATION \
    [--restricted-locations RESTRICTED_LOCATIONS] \
    --credential-mode vended-credentials \
    [--primary-location LOCATION]

단일 버킷 (gs://) 카탈로그 만들기

[!CAUTION] 기존 카탈로그 유형입니다. 새 프로젝트에는 기존 단일 버킷 구성을 사용하지 않는 것이 좋습니다. 이 구성은 카탈로그를 단일 버킷으로 제한하고 카탈로그 이름을 버킷 이름으로 잠급니다.

단일 버킷 (gs://) 카탈로그를 만들려면 다음 명령어를 실행합니다.

gcloud biglake iceberg catalogs create \
    CATALOG_NAME \
    --project PROJECT_ID \
    --catalog-type gcs-bucket \
    --credential-mode vended-credentials

다음을 바꿉니다.

  • CATALOG_NAME: 카탈로그 이름입니다. 다중 버킷 (bl://) 카탈로그 (권장)의 경우 이는 맞춤 카탈로그 이름입니다. 단일 버킷 (gs://) 카탈로그의 경우 REST 카탈로그에 사용된 Cloud Storage 버킷 ID와 일치합니다. 이 이름은 BigQuery에서 이러한 테이블을 쿼리할 때 카탈로그 식별자로도 사용됩니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • DEFAULT_LOCATION: 카탈로그의 기본 저장 위치를 지정합니다. 버킷 (gs://my-bucket) 또는 하위 경로 (gs://my-bucket/path)를 지정할 수 있습니다. 카탈로그의 모든 네임스페이스와 테이블은 지정된 경로 아래에 있어야 합니다. 예를 들어 gs://my-bucket/path를 지정하면 gs://my-bucket/another/path 아래에 네임스페이스나 테이블을 만들 수 없습니다.
  • RESTRICTED_LOCATIONS: (선택사항) 허용된 추가 저장소 위치의 쉼표로 구분된 목록입니다(gs://my-bucket-1/...,gs://my-bucket-2/... 형식). gs://my-bucket/path와 같은 경로를 지정하면 해당 버킷 내의 모든 네임스페이스 또는 테이블이 해당 경로 아래에 있어야 합니다. 기본 위치와 제한된 위치에 걸쳐 구성된 모든 클라우드 스토리지 위치는 동일한 지리적 지역 그룹 또는 관할권 (예: 미국, 유럽, 캐나다, 아시아)에 있어야 합니다. 예를 들어 미국에 있는 버킷과 유럽에 있는 버킷을 혼합할 수 없습니다. 지원되는 위치 목록은 레이크하우스 위치를 참고하세요. 보안 경고: 무단 사용자 인증 정보 노출을 방지하려면 다른 카탈로그와 중복되는 경로를 구성하지 마세요. 자세한 내용은 여러 버킷에 걸친 스토리지를 참고하세요.
  • LOCATION: (선택사항) BigQuery와의 상호 운용성을 보장하기 위한 카탈로그의 기본 리전입니다. 미국 리전 (예: US 또는 us-central1) 또는 EU 리전 (예: EU 또는 europe-west4)의 Cloud Storage 버킷의 경우 카탈로그에 액세스할 수 있고 해당 BigQuery 멀티 리전에서 쿼리할 수 있도록 각각 US 또는 EU를 지정합니다. 자세한 내용은 버킷 및 카탈로그 리전을 참고하세요.

    카탈로그를 만든 후 연결된 모든 스토리지 버킷에 대한 스토리지 객체 사용자 역할 (roles/storage.objectUser)을 카탈로그의 자동 프로비저닝된 Lakehouse 런타임 카탈로그 서비스 계정에 명시적으로 부여합니다.

카탈로그 업그레이드

기존 단일 버킷 (gs://) 카탈로그가 있는 경우 다중 버킷 (bl://) 카탈로그 유형으로 업그레이드할 수 있습니다 (권장). 업그레이드하면 원래 카탈로그 이름을 유지하면서 여러 버킷을 연결하고 제한된 위치를 구성할 수 있습니다.

카탈로그를 업그레이드하려면 카탈로그 업데이트를 참고하세요.

클라이언트 애플리케이션 구성

카탈로그를 만든 후 이를 사용하도록 클라이언트 애플리케이션을 구성합니다. 이 예에서는 사용자 인증 정보 판매를 사용하거나 사용하지 않고 구성하는 방법을 보여줍니다.

클러스터

간소화된 구성 속성을 사용하거나 (권장) 속성을 수동으로 지정하여 Compute Engine 클러스터에서 Managed Service for Apache Spark를 만듭니다.

카탈로그 속성으로 클러스터를 만듭니다.

gcloud dataproc clusters create CLUSTER_NAME \
  --enable-component-gateway \
  --project=PROJECT_ID \
  --region=REGION \
  --optional-components=ICEBERG \
  --image-version=DATAPROC_VERSION \
  --properties="dataproc.lakehouse.catalog.CATALOG_NAME=projects/PROJECT_ID/catalogs/CATALOG_ID"

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름입니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: Managed Service for Apache Spark 클러스터 리전입니다.
  • DATAPROC_VERSION: Managed Service for Apache Spark 이미지 버전(예: 2.3)
  • CATALOG_NAME: 로컬 Spark 카탈로그의 이름입니다 (예: my_catalog). CATALOG_ID과 같을 수 있습니다.
  • CATALOG_ID: 생성된 카탈로그의 ID입니다.

PySpark 애플리케이션 파일에서 카탈로그 구성을 지정하지 않고 SparkSession를 만듭니다.

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("APP_NAME").getOrCreate()

수동 구성

간소화된 구성 속성을 사용하지 않는 경우 위에서 설명한 대로 --properties 플래그 없이 클러스터를 만듭니다. 그런 다음 SparkSession를 수동으로 구성합니다.

import pyspark
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

catalog_name = "CATALOG_NAME"
spark = SparkSession.builder.appName("APP_NAME") \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \
  .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \
  .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \
  .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \
  .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .getOrCreate()

다음을 바꿉니다.

  • CATALOG_NAME: 로컬 Spark 카탈로그의 이름 (예: my_catalog)
  • APP_NAME: Spark 세션의 이름입니다.
  • REST_API_VERSION: 안정적인 API 버전의 경우 v1로 설정합니다.
  • WAREHOUSE_PATH: 창고의 경로입니다. BigLake 카탈로그의 경우 bl://projects/PROJECT_ID/catalogs/CATALOG_ID을 사용합니다. Cloud Storage 버킷 카탈로그에는 gs://CLOUD_STORAGE_BUCKET_NAME를 사용합니다. BigQuery 카탈로그 제휴를 사용하려면 BigQuery에서 카탈로그 제휴 사용을 참고하세요.
  • PROJECT_ID: Apache Iceberg REST 카탈로그 엔드포인트 사용 요금이 청구되는 프로젝트입니다. Cloud Storage 버킷을 소유한 프로젝트와 다를 수 있습니다. REST API를 사용할 때의 프로젝트 구성에 관한 자세한 내용은 시스템 매개변수를 참조하세요.

인증 정보 판매로 구성

인증 정보 판매를 사용하려면 인증 정보 판매 모드의 카탈로그를 사용하고 SparkSession 빌더에 다음 줄을 추가하여 값이 vended-credentialsX-Iceberg-Access-Delegation 헤더를 Iceberg REST 카탈로그 요청에 추가해야 합니다.

.config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials')

사용자 인증 정보 벤더 제공이 포함된 예

다음 예에서는 사용자 인증 정보 판매를 사용하여 쿼리 엔진을 구성합니다.

import pyspark
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

catalog_name = "CATALOG_NAME"
spark = SparkSession.builder.appName("APP_NAME") \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \
  .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \
  .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \
  .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \
  .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \
  .config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .getOrCreate()

자세한 내용은 Apache Iceberg 문서의 RESTCatalog의 헤더 섹션을 참고하세요.

Managed Service for Apache Spark 클러스터는 다음 출시에서 Apache Iceberg용 Google 승인 흐름을 지원합니다.

  • Compute Engine 2.2 이미지 버전 2.2.65 이상의 Managed Service for Apache Spark
  • Compute Engine 2.3 이미지 버전 2.3.11 이상의 Managed Service for Apache Spark

서버리스

간소화된 구성 속성을 사용하거나 (권장) 속성을 수동으로 지정하여 PySpark 일괄 워크로드를 Managed Service for Apache Spark에 제출합니다.

카탈로그 속성으로 일괄 작업을 제출합니다.

gcloud dataproc batches submit pyspark PYSPARK_FILE \
    --project=PROJECT_ID \
    --region=REGION \
    --version=RUNTIME_VERSION \
    --properties="dataproc.lakehouse.catalog.CATALOG_NAME=projects/PROJECT_ID/catalogs/CATALOG_ID"

다음을 바꿉니다.

  • PYSPARK_FILE: PySpark 애플리케이션 파일의 gs:// Cloud Storage 경로입니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: Managed Service for Apache Spark 일괄 워크로드의 리전입니다.
  • RUNTIME_VERSION: Managed Service for Apache Spark 런타임 버전(예: 2.3)
  • CATALOG_NAME: 로컬 Spark 카탈로그의 이름입니다 (예: my_catalog). CATALOG_ID과 같을 수 있습니다.
  • CATALOG_ID: 생성된 카탈로그의 ID입니다.

PySpark 애플리케이션 파일에서 카탈로그 구성을 지정하지 않고 SparkSession를 만듭니다.

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("APP_NAME").getOrCreate()

수동 구성

간소화된 구성 속성을 사용하지 않는 경우 카탈로그 구성을 수동으로 지정해야 합니다.

gcloud dataproc batches submit pyspark PYSPARK_FILE \
    --project=PROJECT_ID \
    --region=REGION \
    --version=RUNTIME_VERSION \
    --properties="\
    spark.sql.defaultCatalog=CATALOG_NAME,\
    spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\
    spark.sql.catalog.CATALOG_NAME.type=rest,\
    spark.sql.catalog.CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog,\
    spark.sql.catalog.CATALOG_NAME.warehouse=WAREHOUSE_PATH,\
    spark.sql.catalog.CATALOG_NAME.header.x-goog-user-project=PROJECT_ID,\
    spark.sql.catalog.CATALOG_NAME.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager,\
    spark.sql.catalog.CATALOG_NAME.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO,\
    spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"

다음을 바꿉니다.

  • PYSPARK_FILE: PySpark 애플리케이션 파일의 gs:// Cloud Storage 경로입니다.
  • REGION: Managed Service for Apache Spark 일괄 워크로드의 리전입니다.
  • RUNTIME_VERSION: Managed Service for Apache Spark 런타임 버전(예: 2.3)
  • CATALOG_NAME: 로컬 Spark 카탈로그의 이름 (예: my_catalog)
  • REST_API_VERSION: 안정적인 API 버전의 경우 v1로 설정합니다.
  • WAREHOUSE_PATH: 창고의 경로입니다. BigLake 카탈로그의 경우 bl://projects/PROJECT_ID/catalogs/CATALOG_ID을 사용합니다. Cloud Storage 버킷 카탈로그에는 gs://CLOUD_STORAGE_BUCKET_NAME를 사용합니다. BigQuery 카탈로그 제휴를 사용하려면 BigQuery에서 카탈로그 제휴 사용을 참고하세요.
  • PROJECT_ID: Apache Iceberg REST 카탈로그 엔드포인트 사용 요금이 청구되는 프로젝트입니다. Cloud Storage 버킷을 소유한 프로젝트와 다를 수 있습니다. REST API를 사용할 때의 프로젝트 구성에 관한 자세한 내용은 시스템 매개변수를 참조하세요.

인증 정보 판매로 구성

사용자 인증 정보 판매를 사용하려면 사용자 인증 정보 판매 모드의 카탈로그를 사용하고 Managed Service for Apache Spark 구성에 다음 줄을 추가하여 값이 vended-credentialsX-Iceberg-Access-Delegation 헤더를 Apache Iceberg REST 카탈로그 엔드포인트 요청에 추가해야 합니다.

.config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials')

사용자 인증 정보 벤더 제공이 포함된 예

다음 예에서는 사용자 인증 정보 판매를 사용하여 쿼리 엔진을 구성합니다.

gcloud dataproc batches submit pyspark PYSPARK_FILE \
    --project=PROJECT_ID \
    --region=REGION \
    --version=RUNTIME_VERSION \
    --properties="\
    spark.sql.defaultCatalog=CATALOG_NAME,\
    spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\
    spark.sql.catalog.CATALOG_NAME.type=rest,\
    spark.sql.catalog.CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog,\
    spark.sql.catalog.CATALOG_NAME.warehouse=WAREHOUSE_PATH,\
    spark.sql.catalog.CATALOG_NAME.header.x-goog-user-project=PROJECT_ID,\
    spark.sql.catalog.CATALOG_NAME.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager,\
    spark.sql.catalog.CATALOG_NAME.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO,\
    spark.sql.catalog.CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\"
    spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

자세한 내용은 Apache Iceberg 문서의 RESTCatalog의 헤더 섹션을 참고하세요.

Managed Service for Apache Spark는 다음 런타임 버전에서 Apache Iceberg용 Google 승인 흐름을 지원합니다.

  • Managed Service for Apache Spark 2.2 런타임 2.2.60 이상
  • Managed Service for Apache Spark 2.3 런타임 2.3.10 이상

Trino

Apache Iceberg REST 카탈로그 엔드포인트와 함께 Trino를 사용하려면 Trino 구성요소가 있는 Managed Service for Apache Spark 클러스터를 만들고 gcloud dataproc clusters create --properties 플래그를 사용하여 카탈로그 속성을 구성합니다. 다음 예시에서는 CATALOG_NAME이라는 Trino 카탈로그를 만듭니다.

gcloud dataproc clusters create CLUSTER_NAME \
    --enable-component-gateway \
    --region=REGION \
    --image-version=DATAPROC_VERSION \
    --network=NETWORK_ID \
    --optional-components=TRINO \
    --properties="\
    trino-catalog:CATALOG_NAME.connector.name=iceberg,\
    trino-catalog:CATALOG_NAME.iceberg.catalog.type=rest,\
    trino-catalog:CATALOG_NAME.iceberg.rest-catalog.uri=https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog,\
    trino-catalog:CATALOG_NAME.iceberg.rest-catalog.warehouse=WAREHOUSE_PATH,\
    trino-catalog:CATALOG_NAME.iceberg.rest-catalog.biglake.project-id=PROJECT_ID,\
    trino-catalog:CATALOG_NAME.iceberg.rest-catalog.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager"

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름입니다.
  • REGION: Managed Service for Apache Spark 클러스터 리전입니다.
  • DATAPROC_VERSION: Managed Service for Apache Spark 이미지 버전(예: 2.2)
  • NETWORK_ID: 클러스터 네트워크 ID입니다. 자세한 내용은 Managed Service for Apache Spark 클러스터 네트워크 구성을 참고하세요.
  • CATALOG_NAME: Apache Iceberg REST 카탈로그 엔드포인트를 사용하는 Trino 카탈로그의 이름입니다.
  • REST_API_VERSION: 안정적인 API 버전의 경우 v1로 설정합니다.
  • WAREHOUSE_PATH: 창고의 경로입니다. BigLake 카탈로그의 경우 bl://projects/PROJECT_ID/catalogs/CATALOG_ID을 사용합니다. Cloud Storage 버킷 카탈로그에는 gs://CLOUD_STORAGE_BUCKET_NAME를 사용합니다.
  • PROJECT_ID: Lakehouse 런타임 카탈로그에 사용할 Google Cloud 프로젝트 ID입니다.

클러스터를 만든 후 기본 VM 인스턴스에 연결하고 Trino CLI를 사용합니다.

trino --catalog=CATALOG_NAME

Managed Service for Apache Spark Trino는 다음 출시에서 Apache Iceberg용 Google 승인 흐름을 지원합니다.

  • Compute Engine 2.2 런타임 버전 2.2.65 이상의 Managed Service for Apache Spark
  • Compute Engine 2.3 런타임 버전의 Managed Service for Apache Spark 2.3.11 이상
  • Compute Engine 3.0의 Managed Service for Apache Spark는 지원되지 않습니다.

인증 정보 판매로 구성

사용자 인증 정보 제공은 Trino 버전 481 이상에서만 지원됩니다.

Apache Iceberg 1.10 이상

오픈소스 Apache Iceberg 1.10 이상 버전에는 GoogleAuthManager에서 Google 승인 흐름을 기본적으로 지원합니다. 다음은 Apache Iceberg REST 카탈로그 엔드포인트를 사용하도록 Spark를 구성하는 방법의 예입니다.

import pyspark
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

catalog_name = "CATALOG_NAME"
spark = SparkSession.builder.appName("APP_NAME") \
  .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \
  .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \
  .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \
  .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \
  .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .getOrCreate()

다음을 바꿉니다.

  • CATALOG_NAME: 로컬 Spark 카탈로그의 이름 (예: my_catalog)
  • APP_NAME: Spark 세션의 이름입니다.
  • REST_API_VERSION: 안정적인 API 버전의 경우 v1로 설정합니다.
  • WAREHOUSE_PATH: 창고의 경로입니다. BigLake 카탈로그의 경우 bl://projects/PROJECT_ID/catalogs/CATALOG_ID을 사용합니다. Cloud Storage 버킷 카탈로그에는 gs://CLOUD_STORAGE_BUCKET_NAME를 사용합니다. BigQuery 카탈로그 제휴를 사용하려면 BigQuery에서 카탈로그 제휴 사용을 참고하세요.
  • PROJECT_ID: Apache Iceberg REST 카탈로그 엔드포인트 사용 요금이 청구되는 프로젝트입니다. Cloud Storage 버킷을 소유한 프로젝트와 다를 수 있습니다. REST API를 사용할 때의 프로젝트 구성에 관한 자세한 내용은 시스템 매개변수를 참조하세요.

인증 정보 판매로 구성

위 예시에서는 사용자 인증 정보 판매가 사용되지 않습니다. 사용자 인증 정보 제공을 사용하려면 사용자 인증 정보 제공 모드의 카탈로그를 사용하고 SparkSession 빌더에 다음 줄을 추가하여 값이 vended-credentialsX-Iceberg-Access-Delegation 헤더를 Apache Iceberg REST 카탈로그 엔드포인트 요청에 추가해야 합니다.

.config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials')

사용자 인증 정보 벤더 제공이 포함된 예

다음 예에서는 사용자 인증 정보 판매를 사용하여 쿼리 엔진을 구성합니다.

import pyspark
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

catalog_name = "CATALOG_NAME"
spark = SparkSession.builder.appName("APP_NAME") \
  .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \
  .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \
  .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \
  .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \
  .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \
  .config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .getOrCreate()

자세한 내용은 Apache Iceberg 문서의 RESTCatalog의 헤더 섹션을 참고하세요.

이전 Apache Iceberg 출시

1.10 이전의 오픈소스 Apache Iceberg 출시의 경우 다음을 사용하여 세션을 구성하여 표준 OAuth 인증을 구성할 수 있습니다.

import pyspark
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

catalog_name = "CATALOG_NAME"
spark = SparkSession.builder.appName("APP_NAME") \
  .config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.9.1,org.apache.iceberg:iceberg-gcp-bundle:1.9.1') \
  .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \
  .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \
  .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \
  .config(f"spark.sql.catalog.{catalog_name}.token", "TOKEN") \
  .config(f"spark.sql.catalog.{catalog_name}.oauth2-server-uri", "https://oauth2.googleapis.com/token") \
  .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .getOrCreate()

다음을 바꿉니다.

  • CATALOG_NAME: 로컬 Spark 카탈로그의 이름 (예: my_catalog)
  • APP_NAME: Spark 세션의 이름입니다.
  • REST_API_VERSION: 안정적인 API 버전의 경우 v1로 설정합니다.
  • WAREHOUSE_PATH: 창고의 경로입니다. BigLake 카탈로그의 경우 bl://projects/PROJECT_ID/catalogs/CATALOG_ID을 사용합니다. Cloud Storage 버킷 카탈로그에는 gs://CLOUD_STORAGE_BUCKET_NAME를 사용합니다. BigQuery 카탈로그 제휴를 사용하려면 BigQuery에서 카탈로그 제휴 사용을 참고하세요.
  • PROJECT_ID: Apache Iceberg REST 카탈로그 엔드포인트 사용 요금이 청구되는 프로젝트입니다. Cloud Storage 버킷을 소유한 프로젝트와 다를 수 있습니다. REST API를 사용할 때의 프로젝트 구성에 관한 자세한 내용은 시스템 매개변수를 참조하세요.
  • TOKEN: 1시간 동안 유효한 인증 토큰입니다(예: gcloud auth application-default print-access-token을 사용하여 생성된 토큰).

인증 정보 판매로 구성

위 예시에서는 사용자 인증 정보 판매가 사용되지 않습니다. 사용자 인증 정보 제공을 사용하려면 사용자 인증 정보 제공 모드의 카탈로그를 사용하고 SparkSession 빌더에 다음 줄을 추가하여 값이 vended-credentialsX-Iceberg-Access-Delegation 헤더를 Apache Iceberg REST 카탈로그 엔드포인트 요청에 추가해야 합니다.

.config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials')

사용자 인증 정보 벤더 제공이 포함된 예

다음 예에서는 사용자 인증 정보 판매를 사용하여 쿼리 엔진을 구성합니다.

import pyspark
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

catalog_name = "CATALOG_NAME"
spark = SparkSession.builder.appName("APP_NAME") \
  .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \
  .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.googleapis.com/iceberg/REST_API_VERSION/restcatalog') \
  .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'WAREHOUSE_PATH') \
  .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \
  .config(f"spark.sql.catalog.{catalog_name}.token", "TOKEN") \
  .config(f"spark.sql.catalog.{catalog_name}.oauth2-server-uri", "https://oauth2.googleapis.com/token") \
  .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \
  .config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation','vended-credentials') \
  .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
  .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \
  .getOrCreate()

자세한 내용은 Apache Iceberg 문서의 RESTCatalog의 헤더 섹션을 참고하세요.

네임스페이스 또는 스키마 만들기

클라이언트를 구성한 후 네임스페이스 또는 스키마를 만들어 테이블을 정리합니다. 네임스페이스 또는 스키마를 만드는 구문은 쿼리 엔진에 따라 다릅니다. 다음 예에서는 Spark와 Trino를 사용하여 이를 만드는 방법을 보여줍니다.

콘솔

  1. Google Cloud 콘솔에서 Lakehouse로 이동합니다.

    레이크하우스로 이동

  2. 기존 카탈로그를 선택하거나 카탈로그가 없는 경우 카탈로그를 만듭니다.

  3. 메뉴 바에서 + 네임스페이스 만들기를 클릭합니다.

  4. 네임스페이스 이름에 네임스페이스의 고유한 이름을 입력합니다.

  5. 위치에 네임스페이스와 연결할 경로를 지정합니다.

    • 다중 버킷 (bl://) (권장): 카탈로그 (default_location 또는 restricted_locations)에서 허용하는 위치에 있는 한 모든 맞춤 위치를 설정할 수 있습니다. 위치를 지정하지 않으면 네임스페이스가 카탈로그의 기본 위치 (예: gs://{path-to-default-location}/{namespace_name}) 아래에 생성됩니다. 다중 버킷 (bl://) 카탈로그 (권장)는 콘솔에서 관리할 수 없습니다.
    • single-bucket (gs://): 네임스페이스 위치가 카탈로그의 단일 버킷에서 자동으로 상속됩니다.
  6. 만들기를 클릭합니다.

Spark

Cloud Storage 웨어하우스

spark.sql("CREATE NAMESPACE IF NOT EXISTS NAMESPACE_NAME;")
spark.sql("USE NAMESPACE_NAME;")

NAMESPACE_NAME을 네임스페이스 이름으로 바꿉니다.

Trino

Cloud Storage 웨어하우스

CREATE SCHEMA IF NOT EXISTS  CATALOG_NAME.SCHEMA_NAME;
USE CATALOG_NAME.SCHEMA_NAME;

다음을 바꿉니다.

  • CATALOG_NAME: Apache Iceberg REST 카탈로그 엔드포인트를 사용하는 Trino 카탈로그의 이름입니다.
  • SCHEMA_NAME: 스키마의 이름입니다.

다음 단계