連線至 Databricks
BigQuery 管理員可以建立連線,以便從 Databricks 筆記本讀取及寫入資料。以下步驟說明如何使用 Google Cloud 控制台和 Databricks 工作區。您也可以使用 gcloud 和 databricks 指令列工具執行這些步驟,但相關指南不在本教學課程的範圍內。
Databricks on Google Cloud 是託管於 Google Cloud的 Databricks 環境,在 Google Kubernetes Engine (GKE) 上執行,並與 BigQuery 和其他 Google Cloud 技術內建整合。如果您是 Databricks 新手,請觀看「Databricks 統合資料平台簡介」影片,概略瞭解 Databricks lakehouse 平台。
目標
- 設定 Google Cloud ,以便連線至 Databricks。
- 在 Google Cloud上部署 Databricks。
- 從 Databricks 查詢 BigQuery。
費用
本教學課程使用 Google Cloud 控制台的計費元件,包括 BigQuery 和 GKE。適用 BigQuery 定價和 GKE 定價。如要瞭解在 Google Cloud上執行 Databricks 帳戶的相關費用,請參閱 Databricks 說明文件的「設定帳戶並建立工作區」一節。
事前準備
將 Databricks 連結至 BigQuery 之前,請先完成下列步驟:
- 啟用 BigQuery Storage API。
- 為 Databricks 建立服務帳戶。
- 建立 Cloud Storage bucket 做為暫時儲存空間。
啟用 BigQuery Storage API
根據預設,凡是使用 BigQuery 的新專案,都會啟用 BigQuery Storage API。如果現有專案未啟用 API,請按照下列操作說明進行:
前往 Google Cloud 控制台的「BigQuery Storage API」頁面。
確認已啟用 BigQuery Storage API。

為 Databricks 建立服務帳戶
接著,建立 Identity and Access Management (IAM) 服務帳戶,允許 Databricks 叢集對 BigQuery 執行查詢。建議您授予這個服務帳戶執行工作所需的最低權限。請參閱「BigQuery 角色和權限」。
前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
按一下「Create service account」(建立服務帳戶),將服務帳戶命名為
databricks-bigquery,輸入簡短說明 (例如Databricks tutorial service account),然後按一下「Create and continue」(建立並繼續)。在「Grant this service account access to project」(將專案存取權授予這個服務帳戶) 下方,指定服務帳戶的角色。如要授予服務帳戶權限,允許其使用 Databricks 工作區和相同專案中的 BigQuery 資料表讀取資料,特別是不參照 materialized view,請授予下列角色:
- BigQuery 讀取工作階段使用者
- BigQuery 資料檢視者
如要授予寫入資料的權限,請授予下列角色:
- BigQuery 工作使用者
- BigQuery 資料編輯者
記下新服務帳戶的電子郵件地址,以便在後續步驟中參考。
按一下「完成」。
建立 Cloud Storage bucket
如要寫入 BigQuery,Databricks 叢集必須能存取 Cloud Storage bucket,才能緩衝處理寫入的資料。
前往 Google Cloud 控制台的「Cloud Storage 瀏覽器」。
按一下「建立 bucket」,開啟「建立 bucket」對話方塊。
指定用於將資料寫入 BigQuery 的 bucket 名稱。bucket 名稱必須全域不重複。如果指定的 bucket 名稱已存在,Cloud Storage 會傳回錯誤訊息。如果發生這種情況,請為 bucket 指定其他名稱。

在本教學課程中,請使用儲存空間位置、儲存空間級別、存取控管和進階設定的預設設定。
按一下「Create」(建立),建立 Cloud Storage bucket。
依序點選「Permissions」(權限) 和「Add」(新增),然後在「Service Accounts」(服務帳戶) 頁面中,指定您為 Databricks 存取權建立的服務帳戶電子郵件地址。

按一下「選取角色」,然後新增「Storage 管理員」角色。
按一下「儲存」。
在 Google Cloud部署 Databricks
請完成下列步驟,準備在 Google Cloud上部署 Databricks。
- 如要設定 Databricks 帳戶,請按照 Databricks 說明文件「Set up your Databricks on Google Cloud account」(設定 Databricks on 帳戶) 中的操作說明進行。
- 註冊後,請進一步瞭解如何管理 Databricks 帳戶。
建立 Databricks 工作區、叢集和筆記本
下列步驟說明如何建立 Databricks 工作區、叢集和 Python 筆記本,以便編寫程式碼來存取 BigQuery。
確認 Databricks 必要條件。
建立第一個工作區。在「Databricks account console」(Databricks 帳戶控制台),按一下「Create Workspace」(建立工作區)。
在「Workspace name」(工作區名稱) 中指定
gcp-bq,然後選取「Region」(區域)。
如要判斷 Google Cloud 專案 ID,請前往 Google Cloud 控制台,然後將值複製到「Google Cloud project ID」欄位。
按一下「Save」(儲存),建立 Databricks 工作區。
如要建立 Databricks 執行階段 7.6 以上版本的 Databricks 叢集,請在左側選單列中選取「Clusters」(叢集),然後按一下頂端的「Create Cluster」(建立叢集)。
指定叢集名稱和大小,然後按一下「Advanced Options」(進階選項),並指定 Google Cloud服務帳戶的電子郵件地址。

點選「建立叢集」。
如要為 Databricks 建立 Python 筆記本,請按照「建立筆記本」中的操作說明進行。
從 Databricks 查詢 BigQuery
完成上述設定後,您就能安全地將 Databricks 連結至 BigQuery。Databricks 使用開放原始碼 Google Apache Spark 轉接器的分支版本存取 BigQuery。
Databricks 會自動將特定查詢述詞 (例如篩選巢狀資料欄) 推送至 BigQuery,減少資料移轉並加快查詢速度。此外,您也可以先使用 query() API 在 BigQuery 上執行 SQL 查詢,減少結果資料集的移轉大小。
下列步驟說明如何存取 BigQuery 中的資料集,並將自己的資料寫入 BigQuery。
存取 BigQuery 公開資料集
BigQuery 提供可用的公開資料集清單。如要查詢 BigQuery Shakespeare 資料集 (屬於公開資料集),請按照下列步驟操作:
如要讀取 BigQuery 資料表,請在 Databricks 筆記本中使用下列程式碼片段。
table = "bigquery-public-data.samples.shakespeare" df = spark.read.format("bigquery").option("table",table).load() df.createOrReplaceTempView("shakespeare")按下
Shift+Return執行程式碼。現在,您可以透過 Apache Spark DataFrame (
df) 查詢 BigQuery 資料表。例如,使用下列指令顯示 DataFrame 的前三列:df.show(3)如要查詢其他資料表,請更新
table變數。Databricks 筆記本的主要功能是,您可以在單一筆記本中混合使用不同語言 (例如 Scala、Python 和 SQL) 的儲存格。
執行上一個建立臨時檢視表的儲存格後,您可以使用下列 SQL 查詢,以視覺化方式呈現莎士比亞作品中的字數。
%sql SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word ORDER BY word_count DESC LIMIT 12
儲存格會對 Databricks 叢集中的 DataFrame 執行 Apache Spark SQL 查詢,而非在 BigQuery 中執行。這種做法的好處是,資料分析會在 Apache Spark 層級進行,不會發出其他 BigQuery API 呼叫,也不會產生額外的 BigQuery 費用。
或者,您也可以使用
query()API 將 SQL 查詢的執行作業委派給 BigQuery,並最佳化以減少結果資料框架的傳輸大小。與前一個範例不同的是,前一個範例是在 Apache Spark 中完成處理,如果使用這種方法,則會套用定價和查詢最佳化,在 BigQuery 上執行查詢。以下範例使用 Scala、
query()API 和 BigQuery 中的莎士比亞公開資料集,計算莎士比亞作品中最常見的五個字詞。執行程式碼前,您必須先在 BigQuery 中建立名為mdataset的空白資料集,供程式碼參照。詳情請參閱「將資料寫入 BigQuery」。%scala // public dataset val table = "bigquery-public-data.samples.shakespeare" // existing dataset where the Google Cloud user has table creation permission val tempLocation = "mdataset" // query string val q = s"""SELECT word, SUM(word_count) AS word_count FROM ${table} GROUP BY word ORDER BY word_count DESC LIMIT 10 """ // read the result of a GoogleSQL query into a DataFrame val df2 = spark.read.format("bigquery") .option("query", q) .option("materializationDataset", tempLocation) .load() // show the top 5 common words in Shakespeare df2.show(5)如需更多程式碼範例,請參閱 Databricks BigQuery 範例筆記本。
將資料寫入 BigQuery
BigQuery 資料表位於資料集中。您必須先在 BigQuery 建立新資料集,才能將資料寫入 BigQuery 資料表。如要為 Databricks Python 筆記本建立資料集,請按照下列步驟操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
展開 「Actions」(動作) 選項,點選「Create dataset」(建立資料集),然後命名為
together。在 Databricks Python 筆記本中,使用下列程式碼片段,從含有三個字串項目的 Python 清單建立 Apache Spark 資料框架:
from pyspark.sql.types import StringType mylist = ["Google", "Databricks", "better together"] df = spark.createDataFrame(mylist, StringType())在筆記本中新增另一個儲存格,將上一步的 Apache Spark DataFrame 寫入資料集
together中的 BigQuery 資料表myTable。系統會建立或覆寫資料表。請使用您稍早指定的 bucket 名稱。bucket = YOUR_BUCKET_NAME table = "together.myTable" df.write .format("bigquery") .option("temporaryGcsBucket", bucket) .option("table", table) .mode("overwrite").save()如要確認資料已成功寫入,請透過 Apache Spark DataFrame (
df) 查詢並顯示 BigQuery 資料表:display(spark.read.format("bigquery").option("table", table).load)
清除所用資源
移除 Databricks 前,請務必備份資料和筆記本。如要清理並完全移除 Databricks,請在Google Cloud 控制台中取消 Databricks 訂閱,並從Google Cloud 控制台移除您建立的所有相關資源。
刪除 Databricks 工作區時,如果 Databricks 建立的兩個 Cloud Storage bucket (名稱為 databricks-WORKSPACE_ID 和 databricks-WORKSPACE_ID-system) 不是空的,可能不會遭到刪除。刪除工作區後,您可以在專案的Google Cloud 控制台中手動刪除這些物件。
後續步驟
本節列出其他文件和教學課程:
- 瞭解 Databricks 免費試用詳細資料。
- 瞭解 Databricks on Google Cloud。
- 瞭解 Databricks BigQuery。
- 閱讀網誌公告,瞭解 BigQuery 對 Databricks 的支援。
- 瞭解 BigQuery 範例筆記本。
- 瞭解 Databricks on Google Cloud的 Terraform 供應商。
- 閱讀 Databricks 網誌,包括資料科學主題和資料集的詳細資訊。