連線至 Apache Spark
BigQuery 管理員可以建立連線,讓資料分析師執行 Apache Spark 的預存程序。
事前準備
啟用 BigQuery Connection API。
-
如要取得建立 Spark 連線所需的權限,請要求管理員授予您專案的 BigQuery 連線管理員 (
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」(資料來源類型) 區段中,選取「Databases」(資料庫)。
或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入
Spark
。在「精選資料來源」部分,按一下「Apache Spark」。
按一下「Apache Spark:BigQuery Federation」解決方案資訊卡。
在「外部資料來源」窗格中,輸入下列資訊:
在「連線類型」清單中,選取「Apache Spark」。
在「連線 ID」欄位中,輸入連線名稱,例如
spark_connection
。在「資料位置」清單中選取區域。
您可以在支援 BigQuery 的區域和多區域中建立連線。詳情請參閱「位置注意事項」。
選用:從「Metastore 服務」清單中選取 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 Metastore 中繼資料。
DATAPROC_CLUSTER_NAME
:Spark 記錄伺服器設定,例如projects/my-project-id/regions/us-central1/clusters/my-cluster
詳情請參閱「建立永久記錄伺服器叢集」。
PROJECT_ID
:您的 Google Cloud 專案 IDLOCATION
:要儲存連線的位置,例如US
CONNECTION_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.admin
IAM 角色包含服務帳戶從 BigQuery 讀取及寫入資料所需的權限。- BigQuery 資料表上的
如要從 Cloud Storage 讀取及寫入資料,您必須授予服務帳戶 Cloud Storage 物件的
storage.objects.*
權限。roles/storage.objectAdmin
IAM 角色包含服務帳戶從 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
角色會建立 Dataproc 持續性記錄伺服器。spark:spark.history.fs.logDirectory
詳情請參閱 Dataproc 持續性記錄伺服器和 Dataproc 角色與權限。
- Dataproc 永久記錄伺服器上的
與使用者共用連線
您可以授予下列角色,讓使用者查詢資料及管理連線:
roles/bigquery.connectionUser
:可讓使用者透過連線功能連結外部資料來源,並對其執行查詢。roles/bigquery.connectionAdmin
:允許使用者管理連線。
如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色和權限一文。
選取下列選項之一:
主控台
前往「BigQuery」頁面
連線會列在專案的「External connections」(外部連線) 群組中。
在「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 預存程序。
- 瞭解如何管理預存程序。