Apache Iceberg 用の BigLake テーブルを使用する

Apache Iceberg 用 BigLake テーブル(以下、BigLake Iceberg テーブル)は、オープンソース エンジンから作成して Cloud Storage に保存する Iceberg テーブルです。BigLake metastore を使用するすべてのテーブルと同様、オープンソース エンジンと BigQuery で読み取れます。ただし、テーブルを作成したオープンソース エンジンのみが、テーブルに書き込むことができます。

始める前に

  1. Verify that billing is enabled for your Google Cloud project.

  2. Enable the BigLake API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

必要なロール

BigLake Iceberg テーブルの管理に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

BigLake Iceberg テーブルを作成する

Spark

spark.sql("CREATE TABLE NAMESPACE_NAME.TABLE_NAME (id int, data string) USING ICEBERG;")

spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()

次のように置き換えます。

  • NAMESPACE_NAME: Namespace の名前
  • TABLE_NAME: テーブルの名前。

Trino

CREATE TABLE SCHEMA_NAME.TABLE_NAME (id int, data varchar);

DESCRIBE SCHEMA_NAME.TABLE_NAME;

次のように置き換えます。

  • SCHEMA_NAME: スキーマの名前
  • TABLE_NAME: テーブルの名前。

テーブルのリスト表示

Spark

spark.sql("SHOW TABLES").show()

Trino

SHOW TABLES;

テーブルにデータを挿入する

次の例では、テーブルにサンプルデータを挿入します。

Spark

spark.sql("INSERT INTO TABLE_NAME VALUES (1, \"first row\"), (2, \"second row\"), (3, \"third row\");")

Trino

INSERT INTO TABLE_NAME VALUES (1, 'first row'), (2, 'second row'), (3, 'third row');

テーブルに対してクエリを実行する

次の例では、テーブルからすべてのデータを選択します。

Spark

spark.sql("SELECT * FROM TABLE_NAME;").show()

Trino

SELECT * FROM TABLE_NAME;

BigQuery

BigQuery から BigLake Iceberg テーブルにクエリを実行するには、次の形式でクエリに 4 部構成のテーブル名を使用します。PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME

SELECT * FROM `PROJECT_NAME.BIGLAKE_CATALOG_ID.NAMESPACE_OR_SCHEMA_NAME.TABLE_NAME`;

次のように置き換えます。

  • PROJECT_NAME: BigLake metastore のカタログを所有するプロジェクト。 Google Cloud コンソールで選択したプロジェクトに、クエリの料金が課金されます。

  • BIGLAKE_CATALOG_ID: カタログの作成時に指定された BigLake メタストア カタログの ID。この識別子は、BigQuery クエリでカタログ名として使用されます。

重要

この識別子は、Cloud Storage バケットの名前でもあります。

たとえば、カタログを保存するためにバケットを作成し、そのバケットに iceberg-bucket という名前を付けた場合、カタログ名とバケット名の両方が iceberg-bucket になります。これは、後で BigQuery でカタログをクエリするときに P.C.N.T 構文を使用して使用されます。たとえば、my-project.biglake_catalog_id.quickstart_namespace.quickstart_table のようにします。

  • NAMESPACE_OR_SCHEMA_NAME: Spark を使用している場合はテーブル名前空間、Trino を使用している場合はテーブル スキーマ名。
  • TABLE_NAME: テーブルの名前。

テーブルを変更する

次の例では、テーブルに列を追加します。

Spark

spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()

Trino

ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;

テーブルを削除する

Spark

spark.sql("DROP TABLE TABLE_NAME;")

Trino

DROP TABLE TABLE_NAME;

料金

料金の詳細については、BigLake の料金をご覧ください。

次のステップ