0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Colab で操作した Apache Iceberg のデータから Apache Iceberg 用の BigLake 外部テーブルを作成する方法

Last updated at Posted at 2025-03-13

概要

本記事では、Google Colab で操作した Apache Iceberg のデータを用い、Apache Iceberg 用の BigLake 外部テーブルを作成する手順を解説します。Iceberg JSON メタデータファイルを使用してテーブルを作成し、bq コマンドを使ったメタデータの更新方法も紹介しています。

image.png

出所:Apache Iceberg 用の BigLake 外部テーブルを作成する | BigQuery | Google Cloud

image.png

出所:Apache Iceberg 用の BigLake 外部テーブルを作成する | BigQuery | Google Cloud

テーブルのメタデータ更新手順の詳細は、以下のドキュメントをご確認ください。

image.png

出所:Apache Iceberg 用の BigLake 外部テーブルを作成する | BigQuery | Google Cloud

手順

Apache Iceberg 用 BigLake 外部テーブルの作成

1. GCS 上に Apache Iceberg テーブルを作成

まず、以下の記事に従って、Google Cloud Storage 上に Apache Iceberg テーブルを作成してください。

作成後、v2.metadata.json のパス(例:gs://manabianqiita/iceberg/default/first_table/metadata/v2.metadata.json)をコピーします。

image.png

2. BigLake 外部テーブルの作成

コピーした v2.metadata.json のパスを利用して、以下の SQL コマンドを実行し、外部テーブルを作成します。

CREATE EXTERNAL TABLE test.default__first_table
OPTIONS(
  format = 'ICEBERG',
  uris = ['gs://manabianqiita/iceberg/default/first_table/metadata/v2.metadata.json']
);

image.png

CONNECTION (接続)を利用せずにテーブルを作成しておりますが、Delta Lake 用の BigLake 外部テーブルドキュメントにて下記のように記述されており、おそらく本番環境では Apache Iceberg 用の BigLake 外部テーブルでも同様に非推奨です。

接続なしでも Delta Lake 外部テーブルを作成できますが、次の理由からおすすめしません。

出所:Delta Lake 用の BigLake 外部テーブルを作成する | BigQuery | Google Cloud

テーブル作成後、下記のクエリでデータ取得を確認します。

SELECT
  *
  FROM
    test.default__first_table
  ORDER BY
    id
  LIMIT 10;

image.png

Apache Iceberg 用 BigLake 外部テーブルのメタデータ更新

1. Google Colab にて DELETE 操作の実行

Google Colab 上で以下の Python コードを実行し、対象テーブルのレコード(id > 3)を削除します。

spark.sql("""
DELETE FROM 
    default.first_table
    WHERE
        id > 3;
""")

image.png

2. BigQuery で更新前の状態を確認

次に、BigQuery 上で再度クエリを実行し、削除操作前のデータ状態であることを確認します。

SELECT
  *
  FROM
    test.default__first_table
  ORDER BY
    id
  LIMIT 10;

3. 最新 metadata file のパスを GCS 上で取得

GCS 上で最新の metadata file(v3.metadata.json)のパスを取得します。

image.png

4. bq コマンドでメタデータ更新定義ファイルを作成

Google Cloud コンソールの bq コマンドラインを使用し、{project_id} を実際のプロジェクト ID に置き換えて以下のコマンドを実行します。

bq mkdef --source_format=ICEBERG \
"gs://manabianqiita/iceberg/default/first_table/metadata/v3.metadata.json" > biglake_version

image.png

この操作により、biglake_version という名前の JSON ファイルが作成されます。ファイル内容は以下の通りです。

cat biglake_version
{
  "autodetect": true,
  "sourceFormat": "ICEBERG",
  "sourceUris": [
    "gs://manabianqiita/iceberg/default/first_table/metadata/v3.metadata.json"
  ]
}

image.png

5. bq コマンドで BigQuery のテーブルメタデータを更新

作成した JSON 定義ファイルを基に、以下のコマンドでテーブルのメタデータを更新します。

bq update --autodetect_schema --external_table_definition=biglake_version \
{project_id}:test.default__first_table

image.png

6. BigQuery で更新後の状態を確認

最後に、以下のクエリを実行して、テーブル内のデータが更新されていることを確認します。

SELECT
  *
  FROM
    test.default__first_table
  ORDER BY
    id
  LIMIT 10;

image.png

また、テーブルのプロパティを確認すると、Source URI(s)gs://manabianqiita/iceberg/default/first_table/metadata/v3.metadata.json となっていることが確認できます。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?