Apache Spark で Apache Iceberg マネージド テーブルを読み取る

以降のセクションでは、Apache Spark で Apache Iceberg マネージド テーブル(以降、Iceberg マネージド テーブル)を使用してマネージド テーブルを読み取る方法について説明します。

始める前に

  • BigLake テーブルの概要で、さまざまなタイプの BigLake テーブルと、それらを使用した場合の影響について理解します。

  • Apache Spark で Iceberg マネージド テーブルを読み取る前に、ストレージ バケットへの Cloud リソース接続が設定されていることを確認してください。次の必要なロール セクションで指定されているように、接続にはストレージ バケットへの書き込み権限が必要です。接続に必要なロールと権限の詳細については、接続を管理するをご覧ください。

必要なロール

プロジェクト内のテーブルを BigQuery が管理できるようにするために必要な権限を取得するには、次の IAM ロールの付与を管理者に依頼してください。

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

これらの事前定義ロールには、プロジェクト内のテーブルの BigQuery による管理を許可するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

プロジェクト内のテーブルの BigQuery による管理を許可するには、次の権限が必要です。

  • プロジェクトに対する bigquery.connections.delegate
  • プロジェクトに対する bigquery.jobs.create
  • プロジェクトに対する bigquery.readsessions.create
  • プロジェクトに対する bigquery.tables.get
  • プロジェクトに対する bigquery.tables.getData
  • バケットに対する storage.buckets.get
  • バケットに対する storage.objects.create
  • バケットに対する storage.objects.delete
  • バケットに対する storage.objects.get
  • バケットに対する storage.objects.list

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Apache Spark で Iceberg マネージド テーブルを読み取る

次の例では、Apache Iceberg で Spark SQL を使用するように環境をセットアップしてから、クエリを実行して、指定された Iceberg マネージド テーブルからデータを取得します。

spark-sql \
  --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \
  --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \
  --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \

# Query the table
SELECT * FROM CATALOG_NAME.FOLDER_NAME;

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

  • ICEBERG_VERSION_NUMBER: Apache Spark Iceberg ランタイムの現在のバージョン。Spark のリリースから最新バージョンをダウンロードしてください。
  • CATALOG_NAME: Iceberg マネージド テーブルを参照するカタログ。
  • BUCKET_PATH: テーブル ファイルを含むバケットへのパス。例: gs://mybucket/
  • FOLDER_NAME: テーブル ファイルを含むフォルダ。例: myfolder

次のステップ