Apache Iceberg 用 BigLake テーブル(以下、BigLake Iceberg テーブル)は、オープンソース エンジンから作成して Cloud Storage に保存する Iceberg テーブルです。BigLake metastore を使用するすべてのテーブルと同様、オープンソース エンジンと BigQuery で読み取れます。ただし、テーブルを作成したオープンソース エンジンのみが、テーブルに書き込むことができます。
始める前に
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.
必要なロール
BigLake Iceberg テーブルの管理に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
テーブルの作成と削除:
-
プロジェクトに対する BigLake 管理者 (
roles/biglake.admin) -
Cloud Storage バケットに対するストレージ管理者 (
roles/storage.admin)
-
プロジェクトに対する BigLake 管理者 (
-
認証情報ベンディング モードでテーブルデータを読み取る: プロジェクトに対する BigLake 閲覧者 (
roles/biglake.viewer) -
認証情報ベンディング モードでテーブルデータを書き込む: プロジェクトに対する BigLake 編集者 (
roles/biglake.editor) -
非認証情報ベンディング モードでテーブルデータを読み取る:
-
プロジェクトに対する BigLake 閲覧者 (
roles/biglake.viewer) -
Cloud Storage バケットに対する Storage オブジェクト閲覧者 (
roles/storage.objectViewer)
-
プロジェクトに対する BigLake 閲覧者 (
-
認証情報ベンディング モード以外でテーブルデータを書き込む:
-
プロジェクトに対する BigLake 編集者 (
roles/biglake.editor) -
Cloud Storage バケットに対する Storage オブジェクト ユーザー (
roles/storage.objectUser)
-
プロジェクトに対する BigLake 編集者 (
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
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 の料金をご覧ください。
次のステップ
- Iceberg REST カタログについて学習する。