使用 Apache Spark 讀取 Apache Iceberg 代管資料表
以下章節說明如何使用 Apache Iceberg 受管理資料表 (以下簡稱「Iceberg 受管理資料表」) 和 Apache Spark,讀取受管理資料表。
事前準備
請參閱 BigLake 資料表總覽,瞭解不同類型的 BigLake 資料表,以及使用這些資料表會造成的影響。
使用 Apache Spark 讀取 Iceberg 代管資料表前,請務必先設定雲端資源連線至儲存空間 bucket。連線必須具備儲存空間 bucket 的寫入權限,如「必要角色」一節所述。如要進一步瞭解連線所需的角色和權限,請參閱「管理連線」。
必要的角色
如要取得讓 BigQuery 管理專案中資料表所需的權限,請要求管理員授予您下列 IAM 角色:
-
如要查詢資料,請按照下列步驟操作:
- 專案的 BigQuery 資料檢視者 (
roles/bigquery.dataViewer) - BigQuery 使用者 (
roles/bigquery.user) 專案
- 專案的 BigQuery 資料檢視者 (
-
將下列角色授予連線服務帳戶,以便讀取及寫入 Cloud Storage 中的資料:
- Storage 物件使用者 (
roles/storage.objectUser) (針對值區) - 值區的「Storage 舊版值區讀取者」 (
roles/storage.legacyBucketReader)
- Storage 物件使用者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備讓 BigQuery 管理專案中資料表所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要讓 BigQuery 管理專案中的資料表,您必須具備下列權限:
-
bigquery.connections.delegate專案 -
bigquery.jobs.create專案 -
bigquery.readsessions.create專案 -
bigquery.tables.get專案 -
bigquery.tables.getData專案 -
storage.buckets.get在 bucket 上 -
storage.objects.create在 bucket 上 -
storage.objects.delete在 bucket 上 -
storage.objects.get在 bucket 上 -
storage.objects.list在 bucket 上
使用 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 Releases」下載最新版本。
- CATALOG_NAME:用於參照 Iceberg 代管資料表的目錄。
- BUCKET_PATH:包含資料表檔案的 bucket 路徑。例如:
gs://mybucket/。 - FOLDER_NAME:包含資料表檔案的資料夾。
例如:
myfolder。