連線至 Apache Spark
BigQuery 管理員可以建立連線,讓資料分析師執行 Apache Spark 的預存程序。
事前準備
啟用 BigQuery Connection API。
-
如要取得建立 Spark 連線所需的權限,請要求管理員授予您專案的 BigQuery Connection 管理員 (
roles/bigquery.connectionAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。 - 選用:如要使用 Dataproc Metastore 管理中繼資料,請務必建立 Dataproc Metastore 服務。
- 選用:如要使用 Spark 記錄伺服器網頁介面查看工作記錄,請確保已建立 Dataproc 永久記錄伺服器 (PHS)。
位置注意事項
選擇資料的位置時,請考慮下列事項:
多區域
您必須指定位於相同大型地理區域的 Google Cloud 資源:
BigQuery 美國多區域的連線可以參照美國地理區域中任何單一區域的 Spark 歷程記錄伺服器 或 Dataproc Metastore,例如
us-central1、us-east4或us-west2。BigQuery 歐盟多區域的連線可以參照成員國 (例如
europe-north1或europe-west3) 的 Spark 歷記錄伺服器或 Dataproc Metastore。
單一地區
單一區域中的連線只能參照 Google Cloud相同區域中的資源。舉例來說,單一區域 us-east4 中的連線只能參照 us-east4 中的 Spark 記錄伺服器或 Dataproc Metastore。
建立連結
選取下列選項之一:
控制台
前往「BigQuery」頁面
在「Explorer」窗格中,按一下「新增資料」。
「新增資料」對話方塊隨即開啟。
在「Filter By」(篩選依據) 窗格的「Data Source Type」(資料來源類型) 區段中,選取「Business Applications」(商用應用程式)。
或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入
Spark。在「精選資料來源」部分,按一下「Apache Spark」。
按一下「Apache Spark:BigQuery Federation」解決方案資訊卡。
在「外部資料來源」窗格中,輸入下列資訊:
在「連線類型」清單中,選取「Apache Spark」。
在「連線 ID」欄位中,輸入連線名稱,例如
spark_connection。在「資料位置」清單中選取區域。
您可以在支援 BigQuery 的單一區域和多區域中建立連線。詳情請參閱「位置注意事項」。
選用:從「Metastore service」清單中選取 Dataproc Metastore。
選用:在「記錄伺服器叢集」欄位中,輸入 Dataproc 永久記錄伺服器。
點選「建立連線」。
點選「前往連線」。
在「連線資訊」窗格中,複製服務帳戶 ID,以供後續步驟使用。
bq
在指令列環境中,使用
bq mk指令建立連線:bq mk --connection --connection_type='SPARK' \ --properties=PROPERTIES \ --project_id=PROJECT_ID \ --location=LOCATION CONNECTION_ID
更改下列內容:
PROPERTIES:鍵/值組合,以 JSON 格式提供連線專屬參數例如:
--properties='{ "metastoreServiceConfig": {"metastoreService": "METASTORE_SERVICE_NAME"}, "sparkHistoryServerConfig": {"dataprocCluster": "DATAPROC_CLUSTER_NAME"} }'更改下列內容:
METASTORE_SERVICE_NAME:具有 gRPC 網路設定的 Dataproc Metastore,例如projects/my-project-id/locations/us-central1/services/my-service詳情請參閱「使用端點通訊協定存取儲存的 Hive 中繼資料」。
DATAPROC_CLUSTER_NAME:Spark 記錄伺服器設定,例如projects/my-project-id/regions/us-central1/clusters/my-cluster詳情請參閱「建立永久記錄伺服器叢集」。
PROJECT_ID:您的 Google Cloud 專案 IDLOCATION:要儲存連線的位置,例如USCONNECTION_ID:連線 ID,例如myconnection在 Google Cloud 控制台中查看連線詳細資料時,連線 ID 是「連線 ID」中顯示的完整連線 ID 最後一個部分的值,例如
projects/.../locations/.../connections/myconnection
擷取並複製服務帳戶 ID,因為您會在另一個步驟中用到:
bq show --location=LOCATION --connection PROJECT_ID.LOCATION.CONNECTION_ID
輸出結果會與下列內容相似:
Connection myproject.us.myconnection name type properties ---------------------- ------- --------------------------------------------------- myproject.us.myconnection SPARK {"serviceAccountId": "bqserver@example.iam.gserviceaccount.com"}
如要瞭解如何管理連線,請參閱「管理連線」。
將存取權授予服務帳戶
如要讓 Apache Spark 的預存程序存取資源,您必須授予與預存程序連線相關聯的服務帳戶必要 IAM 權限。 Google Cloud或者,您也可以使用自訂服務帳戶存取資料。
如要從 BigQuery 讀取及寫入資料,您必須將下列 IAM 權限授予服務帳戶:
- BigQuery 資料表上的
bigquery.tables.* - 專案的
bigquery.readsessions.*
roles/bigquery.adminIAM 角色包含服務帳戶從 BigQuery 讀取及寫入資料所需的權限。- BigQuery 資料表上的
如要從 Cloud Storage 讀取及寫入資料,您必須授予服務帳戶 Cloud Storage 物件的
storage.objects.*權限。roles/storage.objectAdminIAM 角色包含服務帳戶從 Cloud Storage 讀取及寫入資料所需的權限。如果您在建立連線時指定 Dataproc Metastore,則必須授予服務帳戶 Dataproc Metastore 的
metastore.services.get權限,BigQuery 才能擷取 Metastore 設定的詳細資料。預先定義的
roles/metastore.metadataViewer角色包含服務帳戶所需的權限,可擷取中繼資料存放區設定的詳細資料。您也必須授予服務帳戶 Cloud Storage 值區的
roles/storage.objectAdmin角色,才能讓預存程序存取 Dataproc Metastore 的 Hive 倉儲目錄 (hive.metastore.warehouse.dir)。 如果預存程序對 Metastore 執行作業,您可能需要授予額外權限。如要進一步瞭解 Dataproc Metastore 中的 IAM 角色和權限,請參閱預先定義的 Dataproc Metastore 角色和權限。如果您在建立連線時指定 Dataproc 永久歷史記錄伺服器,則必須授予服務帳戶下列角色:
- Dataproc 永久記錄伺服器的
roles/dataproc.viewer角色,其中包含dataproc.clusters.get權限。 - 在您為屬性指定 Cloud Storage 值區時,
roles/storage.objectAdmin角色spark:spark.history.fs.logDirectory建立 Dataproc 持續性記錄伺服器。
詳情請參閱 Dataproc 持續性記錄伺服器和 Dataproc 角色與權限。
- Dataproc 永久記錄伺服器的
與使用者共用連線
您可以授予下列角色,讓使用者查詢資料及管理連線:
roles/bigquery.connectionUser:可讓使用者透過連線功能連結外部資料來源,並對其執行查詢。roles/bigquery.connectionAdmin:讓使用者管理連線。
如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色和權限一文。
選取下列選項之一:
控制台
前往「BigQuery」頁面
連線會列在專案中,位於「連線」群組。
點選左側窗格中的 「Explorer」:

如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。
按一下專案,然後依序點選「連線」和所需連線。
在「詳細資料」窗格中,按一下「共用」即可共用連線。 接著,按照下列步驟操作:
在「連線權限」對話方塊中,新增或編輯主體,與其他主體共用連線。
按一下 [儲存]。
bq
您無法使用 bq 指令列工具共用連線。 如要共用連線,請使用 Google Cloud 控制台或 BigQuery Connections API 方法共用連線。
API
請使用 BigQuery Connections REST API 參考資料中的 projects.locations.connections.setIAM 方法,並提供 policy 資源的執行個體。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
後續步驟
- 瞭解不同連線類型。
- 瞭解如何管理連線。
- 瞭解如何建立 Apache Spark 預存程序。
- 瞭解如何管理預存程序。