Apache Iceberg 테이블을 만들면 Lakehouse 런타임 카탈로그의 네임스페이스 내에 테이블 메타데이터가 등록됩니다.
테이블을 만드는 동안 네임스페이스 또는 테이블 수준에서 명시적 스토리지 위치를 지정하지 않으면 시스템은 네임스페이스 및 테이블 식별자를 추가하여 카탈로그의 기본 위치 (카탈로그의 기본 Cloud Storage 버킷에서 파생됨) 아래에 테이블의 메타데이터 및 데이터 디렉터리를 자동으로 구성합니다.
Lakehouse 런타임 카탈로그는 쿼리 엔진 통합 외에도 오픈소스 Iceberg REST 카탈로그 API 사양 (POST /v1/{prefix}/namespaces/{namespace}/tables)을 구현하여 호환되는 REST 클라이언트가 테이블을 직접 만들 수 있도록 합니다.
시작하기 전에
테이블 개요를 참조하여 다양한 테이블 유형과 테이블 사용의 영향을 알아보세요.
-
BigLake API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 포함된 서비스 사용량 관리자 IAM 역할(roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기
필요한 역할
테이블을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 및 스토리지 버킷에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
전체:
- BigLake 관리자 (
roles/biglake.admin) - 프로젝트 - 스토리지 관리자 (
roles/storage.admin) - 대상 Cloud Storage 버킷
- BigLake 관리자 (
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
테이블 만들기
Iceberg 테이블을 만듭니다.
콘솔
콘솔에서 Lakehouse 로 이동합니다. Google Cloud
기존 카탈로그를 선택하거나 카탈로그가 없는 경우 카탈로그를 만듭니다.
메뉴 바에서 +테이블 만들기 를 클릭합니다.
테이블 형식에서 Iceberg를 선택합니다.
테이블 이름에 고유한 테이블 이름을 입력합니다.
만들기 를 클릭합니다.
테이블이 네임스페이스 세부정보 페이지에 표시됩니다.
Spark
spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
다음 값을 바꿉니다.
Trino
CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);
DESCRIBE SCHEMA_NAME.TABLE_NAME;
다음 값을 바꿉니다.
SCHEMA_NAME: 스키마의 이름입니다.TABLE_NAME: 테이블의 이름입니다.
Trino와 함께 BigQuery 카탈로그 제휴를 사용하는 경우 테이블의 위치를 지정할 수 없습니다. 스키마의 기본 위치가 항상 사용됩니다.
REST
REST API를 사용하여 Iceberg 테이블을 만들려면 CreateIcebergTable 엔드포인트에 POST 요청을 작성합니다.
POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables
요청 본문에는 테이블 스키마, 파티션 사양, 초기 속성을 정의하는 유효한 Iceberg CreateTableRequest JSON 페이로드가 포함되어야 합니다.
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID입니다. Google CloudCATALOG_ID: Lakehouse 런타임 카탈로그의 ID입니다.NAMESPACE_NAME: 카탈로그 네임스페이스의 이름입니다.
다음 단계
- 테이블을 나열하는 방법을 알아보세요.
- 테이블에 데이터를 삽입하는 방법을 알아보세요.