使用 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。

後續步驟