使用 BigQuery DataFrames 同步线上和线下数据集

将 Bigtable 与 BigQuery 搭配使用,您可以构建实时分析数据库,并在机器学习 (ML) 流水线中使用该数据库。这样,您就可以让数据保持同步,支持数据处理和模型开发(离线访问)以及低延迟应用服务(在线访问)。

如需构建实时分析数据库,您可以使用 BigQuery DataFrames,这是一组用于 BigQuery 数据处理的开源 Python 库。借助 BigQuery DataFrame,您可以在 BigQuery 中开发和训练模型,并自动将用于机器学习模型的最新数据值的副本复制到 Bigtable 中,以便在线提供服务。

本文档简要介绍了如何使用 bigframes.streaming API 创建 BigQuery 作业,以便在 BigQuery 和 Bigtable 之间自动复制和同步数据集。在阅读本文档之前,请确保您了解以下文档:

BigQuery DataFrames

BigQuery DataFrames 可帮助您在 BigQuery 中开发和训练模型,并自动将用于机器学习模型的最新数据值的副本复制到 Bigtable 中以供在线提供。它支持您执行以下操作:

  • 直接在与 Pandas 兼容的界面 (bigframes.pandas) 中针对 BigQuery 数据开发数据转换
  • 使用类似于 scikit-learn 的 API (bigframes.ML) 训练模型
  • 将低延迟推理所需的数据与 Bigtable (bigframes.streaming) 同步,以支持面向用户的应用

BigFrames StreamingDataFrame

bigframes.streaming.StreamingDataFrame 是 BigQuery DataFrames 软件包中的 DataFrame 类型。借助该 API,您可以创建 StreamingDataFrame 对象,该对象可用于生成持续运行的作业,将数据从指定的 BigQuery 表流式传输到 Bigtable 以进行在线服务。为此,您需要生成 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 容量计算价格,以为单位。如需运行持续查询,您必须拥有使用企业版或企业 Plus 版预留以及使用 CONTINUOUS 作业类型的预留分配

其他 BigQuery 资源(例如数据提取和存储)的使用费用将按 BigQuery 价格中显示的费率收取。

接收持续查询结果的 Bigtable 服务的使用将按照 Bigtable 定价费率收费。

限制

与持续查询相关的所有地图项位置限制也适用于流式 DataFrame。

后续步骤