Apache Spark で Apache Iceberg マネージド テーブルを読み取る
以降のセクションでは、Apache Spark で Apache Iceberg マネージド テーブル(以降、Iceberg マネージド テーブル)を使用してマネージド テーブルを読み取る方法について説明します。
始める前に
BigLake テーブルの概要で、さまざまなタイプの BigLake テーブルと、それらを使用した場合の影響について理解します。
Apache Spark で Iceberg マネージド テーブルを読み取る前に、ストレージ バケットへの Cloud リソース接続が設定されていることを確認してください。次の必要なロール セクションで指定されているように、接続にはストレージ バケットへの書き込み権限が必要です。接続に必要なロールと権限の詳細については、接続を管理するをご覧ください。
必要なロール
プロジェクト内のテーブルを BigQuery が管理できるようにするために必要な権限を取得するには、次の IAM ロールの付与を管理者に依頼してください。
-
データをクエリするには:
- プロジェクトに対する BigQuery データ閲覧者(
roles/bigquery.dataViewer) - プロジェクトに対する BigQuery ユーザー(
roles/bigquery.user)
- プロジェクトに対する BigQuery データ閲覧者(
-
Cloud Storage でのデータの読み取りと書き込みを接続サービス アカウントで行えるように、次のロールを付与します。
- バケットに対するストレージ オブジェクト ユーザー(
roles/storage.objectUser) - バケットに対する Storage レガシー バケット読み取り(
roles/storage.legacyBucketReader)
- バケットに対するストレージ オブジェクト ユーザー(
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、プロジェクト内のテーブルの 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