Membuat dan mengelola resource di katalog runtime Lakehouse

Lakehouse untuk Apache Iceberg mendukung pengelolaan resource melalui katalog runtime Lakehouse.

Katalog bersama ini menghilangkan persyaratan untuk mempertahankan beberapa katalog untuk workload open source di berbagai mesin pemrosesan data. Operasi yang didukung mencakup pembuatan, melihat, mengubah, dan menghapus resource seperti namespace dan tabel.

Sebelum memulai

  1. Pastikan penagihan diaktifkan untuk Google Cloud project Anda.

  2. Aktifkan BigQuery, BigQuery Storage, dan Managed Service for Apache Spark API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    Aktifkan API

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan guna mengelola resource Apache Iceberg di katalog runtime Lakehouse, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Membuat resource katalog

Bagian berikut menjelaskan cara membuat resource di katalog runtime Lakehouse.

Membuat namespace

Pilih salah satu opsi berikut:

API

Gunakan metode datasets.insert, dan tentukan kolom ExternalCatalogDatasetOptions di resource set data yang Anda teruskan.

{
  "datasetReference": {
    "projectId": "PROJECT_ID",
    "datasetId": "DATASET_ID"
  },
  "externalCatalogDatasetOptions": {
    "defaultStorageLocationUri": "URI",
    "parameters": {
      ...
    }
  },
  "location": "LOCATION"
}

Ganti kode berikut:

Apache Spark SQL

CREATE NAMESPACE SPARK_CATALOG.NAMESPACE;

Ganti kode berikut:

  • SPARK_CATALOG: nama katalog Apache Spark Anda.
  • NAMESPACE: nama namespace baru Anda.

Terraform

provider "google" {
  project = "PROJECT_ID"
}

resource "google_bigquery_dataset" "default" {
  dataset_id = "DATASET_ID"
  location   = "LOCATION"

  external_catalog_dataset_options {
    default_storage_location_uri = "URI"
    parameters = {
      ...
    }
  }
}

Ganti kode berikut:

Membuat tabel Apache Iceberg

Pilih salah satu opsi berikut:

API

Gunakan metode tables.insert, dan tentukan kolom ExternalCatalogTableOptions di resource tabel yang Anda teruskan.

{
  "tableReference": {
    "projectId": "PROJECT_ID",
    "datasetId": "DATASET_ID",
    "tableId": "TABLE_ID"
  },
  "externalCatalogTableOptions": {
    "parameters": {
      "table_type": "iceberg",
      "metadata_location": "METADATA_URI"
    },
    "connection_id": "CONNECTION_ID"
  }
}

Ganti kode berikut:

  • PROJECT_ID: ID project yang berisi tabel target Anda.
  • DATASET_ID: ID set data yang berisi tabel target Anda.
  • TABLE_ID: ID tabel target Anda.
  • METADATA_URI: Cloud Storage URI untuk file metadata Apache Iceberg terbaru. Contohnya, gs://mybucket/mytable/metadata/1234.metadata.json.
  • CONNECTION_ID: ID koneksi Anda ke Cloud Storage.

Apache Spark SQL

CREATE TABLE SPARK_CATALOG.NAMESPACE.TABLE
  (id bigint, data string) USING iceberg;

Ganti kode berikut:

  • SPARK_CATALOG: nama katalog Apache Spark Anda.
  • NAMESPACE: nama namespace Anda.
  • TABLE: nama tabel baru Anda.

Terraform

resource "google_bigquery_table" "default" {
  deletion_protection = false
  dataset_id          = google_bigquery_dataset.default.dataset_id
  table_id            = "TABLE"

  external_catalog_table_options {
    storage_descriptor {
      location_uri  = "STORAGE_URI"
      input_format  = "org.apache.hadoop.mapred.FileInputFormat"
      output_format = "org.apache.hadoop.mapred.FileOutputFormat"
    }
    parameters = {
      "table_type"        = "iceberg"
      "metadata_location" = "METADATA_URI"
      "write.parquet.compression-codec" : "zstd"
      "EXTERNAL" : "TRUE"
    }
  }
}

Ganti kode berikut:

  • TABLE: nama tabel target.
  • STORAGE_URI: Cloud Storage URI tempat data tabel disimpan, dimulai dengan gs://.
  • METADATA_URI: Cloud Storage URI untuk file metadata Apache Iceberg terbaru. Contohnya, gs://mybucket/mytable/metadata/1234.metadata.json.

Melihat resource katalog

Bagian berikut menjelaskan cara melihat resource di katalog runtime Lakehouse.

Melihat namespace

Pilih salah satu opsi berikut:

API

Gunakan metode datasets.listuntuk melihat semua namespace, atau gunakan metode datasets.getuntuk melihat informasi tentang namespace yang ditentukan.

Apache Spark SQL

Untuk melihat semua namespace dalam katalog, gunakan pernyataan berikut:

SHOW { DATABASES | NAMESPACES } IN SPARK_CATALOG;

Ganti SPARK_CATALOG dengan nama katalog Apache Spark Anda.

Untuk melihat informasi tentang namespace yang ditentukan, gunakan pernyataan berikut:

DESCRIBE { DATABASE | NAMESPACE } [EXTENDED]
SPARK_CATALOG.NAMESPACE;

Ganti kode berikut:

  • SPARK_CATALOG: nama katalog Apache Spark Anda.
  • NAMESPACE: nama namespace Anda.

Melihat tabel

Pilih salah satu opsi berikut:

API

Gunakan metode tables.listuntuk melihat semua tabel dalam namespace, atau gunakan metode tables.getuntuk melihat informasi tentang tabel yang ditentukan.

Apache Spark SQL

Untuk melihat semua tabel dalam namespace, gunakan pernyataan berikut:

SHOW TABLES IN SPARK_CATALOG.NAMESPACE;

Ganti kode berikut:

  • SPARK_CATALOG: nama katalog Apache Spark Anda.
  • NAMESPACE: nama namespace Anda.

Untuk melihat informasi tentang tabel yang ditentukan, gunakan pernyataan berikut:

DESCRIBE TABLE [EXTENDED]
SPARK_CATALOG.NAMESPACE.TABLE;

Ganti kode berikut:

  • SPARK_CATALOG: nama katalog Apache Spark Anda.
  • NAMESPACE: nama namespace Anda.
  • TABLE: nama tabel Anda.

Mengubah resource katalog

Bagian berikut menjelaskan cara mengubah resource di katalog runtime Lakehouse.

Memperbarui namespace

Pilih salah satu opsi berikut:

API

Gunakan metode datasets.patch, dan perbarui kolom ExternalCatalogDatasetOptions di resource set data. Metode datasets.update tidak direkomendasikan karena menggantikan seluruh resource set data.

Apache Spark SQL

Gunakan pernyataan ALTER DATABASE.

Memperbarui tabel Apache Iceberg

Pilih salah satu opsi berikut:

API

Gunakan metode, dan perbarui kolom di resource tabel.tables.patchExternalCatalogTableOptions Metode tables.update tidak direkomendasikan karena menggantikan seluruh resource tabel.

Untuk memperbarui file skema atau metadata, gunakan metode tables.patch dan tetapkan properti autodetect_schema ke benar (true):

PATCH https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID?autodetect_schema=true

Ganti kode berikut:

  • PROJECT_ID: ID project yang berisi tabel yang ingin Anda perbarui.
  • DATASET_ID: ID set data yang berisi tabel yang ingin Anda perbarui.
  • TABLE_ID: ID tabel yang ingin Anda perbarui.

Dalam isi permintaan, tentukan nilai yang diperbarui untuk setiap kolom. Misalnya, untuk memperbarui lokasi metadata tabel Apache Iceberg, tentukan nilai yang diperbarui untuk kolom metadata_location:

{
  "externalCatalogTableOptions": {
    "parameters": {"metadata_location": "METADATA_URI"}
  },
  "schema": null
}'

Ganti METADATA_URI dengan Cloud Storage URI untuk file metadata Apache Iceberg terbaru. Contohnya, gs://mybucket/mytable/metadata/1234.metadata.json.

Apache Spark SQL

Gunakan pernyataan ALTER TABLE.

Menghapus resource katalog

Bagian berikut menjelaskan cara menghapus resource di katalog runtime Lakehouse.

Menghapus namespace

Pilih salah satu opsi berikut:

API

Gunakan metode datasets.delete method. Tetapkan parameter deleteContents ke benar (true) untuk menghapus tabel di namespace Anda.

Apache Spark SQL

DROP NAMESPACE SPARK_CATALOG.NAMESPACE;

Ganti kode berikut:

  • SPARK_CATALOG: nama katalog Apache Spark Anda.
  • NAMESPACE: nama namespace Anda.

Menghapus tabel

Pilih salah satu opsi berikut:

API

Gunakan metode tables.delete dan tentukan nama tabel. Metode ini tidak menghapus file terkait di Cloud Storage.

Apache Spark SQL

Untuk hanya membuang tabel, gunakan pernyataan berikut:

DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE;

Ganti kode berikut:

  • SPARK_CATALOG: nama katalog Apache Spark Anda.
  • NAMESPACE: nama namespace Anda.
  • TABLE: nama tabel yang akan dihapus.

Untuk membuang tabel dan menghapus file terkait di Cloud Storage, gunakan pernyataan berikut:

DROP TABLE SPARK_CATALOG.NAMESPACE.TABLE PURGE;

Ganti kode berikut:

  • SPARK_CATALOG: nama katalog Apache Spark Anda.
  • NAMESPACE: nama namespace Anda.
  • TABLE: nama tabel yang akan dihapus.

Langkah berikutnya