使用 BigQuery DataFrames 同步處理線上和離線資料集
搭配使用 Bigtable 和 BigQuery,即可建構即時分析資料庫,並用於機器學習 (ML) 管線。這樣一來,您就能讓資料保持同步,支援資料操控和模型開發 (離線存取),以及低延遲應用程式放送 (線上存取)。
如要建構即時分析資料庫,可以使用 BigQuery DataFrames,這是一組用於處理 BigQuery 資料的開放原始碼 Python 程式庫。您可以使用 BigQuery DataFrames 在 BigQuery 中開發及訓練模型,並自動將用於機器學習模型的最新資料值副本複製到 Bigtable,以供線上服務使用。
本文將概述如何使用 bigframes.streaming API
建立 BigQuery 工作,自動在 BigQuery 和 Bigtable 之間複製及同步處理資料集。閱讀本文前,請務必先瞭解下列文件:
BigQuery DataFrames
BigQuery DataFrames 可協助您在 BigQuery 中開發及訓練模型,並自動將用於機器學習模型的最新資料值副本複製到 Bigtable,以供線上服務使用。可讓您執行以下操作:
- 在與 Pandas 相容的介面中,直接對 BigQuery 資料開發資料轉換作業 (
bigframes.pandas
) - 使用類似 scikit-learn 的 API (
bigframes.ML
) 訓練模型 - 將低延遲推論所需的資料與 Bigtable (
bigframes.streaming
) 同步處理,以支援面向使用者的應用程式
BigFrames StreamingDataFrame
bigframes.streaming.StreamingDataFrame
是 BigQuery DataFrames 套件中的 DataFrame 型別。您可以使用這個物件建立持續執行的工作,將指定 BigQuery 資料表中的資料串流至 Bigtable,以供線上服務使用。StreamingDataFrame
方法是生成
BigQuery 連續查詢。
BigFrames StreamingDataFrame
可以執行下列操作:
- 從指定 BigQuery 資料表建立
StreamingDataFrame
- 視需要執行其他 Pandas 作業,例如選取、篩選及預覽內容
- 建立及管理串流工作,將資料傳輸至 Bigtable
必要的角色
如要在 BigQuery 筆記本中使用 BigQuery DataFrames,請要求管理員授予下列 IAM 角色:
如要取得將資料寫入 Bigtable 資料表所需的權限,請要求管理員授予下列 IAM 角色:
開始使用
BigQuery DataFrames 是開放原始碼套件,如要安裝最新版本,請執行 pip install --upgrade bigframes
。
如要建立第一個 BigFrames StreamingDataFrame
,並在 BigQuery 和 Bigtable 之間同步處理資料,請執行下列程式碼片段。如需完整的程式碼範例,請參閱 GitHub 筆記本 BigFrames StreamingDataFrame。
import bigframes.streaming as bst
bigframes.options._bigquery_options.project = "PROJECT"
sdf = bst.read_gbq_table("birds.penguins_bigtable_streaming")
job = sdf.to_bigtable(instance="BIGTABLE_INSTANCE",
table="TABLE",
app_profile=None,
truncate=True,
overwrite=True,`
auto_create_column_families=True,
bigtable_options={},
job_id=None,
job_id_prefix= "test_streaming_",)
print(job.running())
print(job.error_result)
更改下列內容:
- PROJECT:您的 Google Cloud 專案 ID
- BIGTABLE_INSTANCE:包含您要寫入資料表的 Bigtable 執行個體 ID
- TABLE:您要寫入的 Bigtable 資料表 ID
工作初始化後,會在 BigQuery 中以連續查詢的形式執行,並將所有資料變更串流至 Bigtable。
費用
使用 BigQuery BigFrames API 不會產生額外費用,但系統會針對連續查詢、Bigtable 和 BigQuery 所用的基礎資源收費。
持續查詢會採用 BigQuery 容量運算定價,以運算單元為單位。如要執行連續查詢,您必須擁有使用 Enterprise 或 Enterprise Plus 版本的預留位置,以及使用 CONTINUOUS
工作類型的預留位置指派。
使用其他 BigQuery 資源 (例如資料擷取和儲存空間) 時,系統會按照 BigQuery 價格頁面顯示的費率計費。
如果 Bigtable 服務會持續接收查詢結果,系統會按照 Bigtable 定價費率收費。
限制
與連續查詢相關的所有功能和位置限制,也適用於串流 DataFrame。
後續步驟
- 開始使用 Feast on Google Cloud
- 運用 Feast 簡化機器學習開發作業
- 查詢儲存在外部資料表中的 Bigtable 資料。
- 將資料從 BigQuery 匯出至 Bigtable。