コンテンツにスキップ
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ストアドプロシージャ経由

  1. BigQuery SparkコネクションをBQで作成
  2. SparkサービスアカウントにstorageObjectAdmin・biglake.admin・bigquery.dataViewerなどの権限付与
  3. CREATE OR REPLACE PROCEDUREでBigQuery Sparkプロシージャを定義(PyIcebergライブラリ使用)
  4. Sparkプロシージャを実行してIcebergテーブルに書き込み

BigQuery→Snowflake連携のポイント

  • Snowflake BigLakeメタストアカタログ統合がGAになり、メタデータファイルパス更新不要で最新データ参照可能
  • BigQuery LakhouseカタログのIcebergテーブルは4層構造(プロジェクト.カタログ.グループ.テーブル
    • 通常テーブル(3層: プロジェクト.データセット.テーブル)とFROM句の指定形式が異なる

技術スタック

  • BigQuery Spark Connection(asia-northeast1)
  • PyIceberg[gcsfs,pyarrow]
  • Google Auth(SigV4ではなく標準Python認証)