Classmethod Bigquery Lakehouse Iceberg
BigQuery Lakehouse カタログ Iceberg テーブルへの SQL 書き込みとクエリパフォーマンスを検証してみた
- URL: https://dev.classmethod.jp/articles/bigquery-lakehouse-iceberg-write-and-performance/
- 日付: 2026-06-09
- Tier: Tier 2
- 要旨: BigQuery LakhouseカタログのIcebergテーブルへのSQL書き込み方法とクエリパフォーマンスを検証。SQL直接書き込みは不可で、BigQuery Sparkストアドプロシージャ経由のPyIceberg利用が必要。Snowflake側からはBigLake メタストアカタログ統合(GA)でメタデータファイルパス更新不要。
詳細
課題設定
- BigQuery Lakehouse カタログのIcebergテーブルはBigQuery SQLからの直接書き込み不可
- 公式ドキュメント記載の制限: クエリ速度はCloud Storage直接読取と同等
解決策: Sparkストアドプロシージャ経由
- BigQuery SparkコネクションをBQで作成
- SparkサービスアカウントにstorageObjectAdmin・biglake.admin・bigquery.dataViewerなどの権限付与
CREATE OR REPLACE PROCEDUREでBigQuery Sparkプロシージャを定義(PyIcebergライブラリ使用)- Sparkプロシージャを実行してIcebergテーブルに書き込み
BigQuery→Snowflake連携のポイント
- Snowflake BigLakeメタストアカタログ統合がGAになり、メタデータファイルパス更新不要で最新データ参照可能
- BigQuery LakhouseカタログのIcebergテーブルは4層構造(
プロジェクト.カタログ.グループ.テーブル)- 通常テーブル(3層:
プロジェクト.データセット.テーブル)とFROM句の指定形式が異なる
- 通常テーブル(3層:
技術スタック
- BigQuery Spark Connection(asia-northeast1)
- PyIceberg[gcsfs,pyarrow]
- Google Auth(SigV4ではなく標準Python認証)