Path: blob/master/site/zh-cn/io/tutorials/bigtable.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
标题
概述
本笔记本展示了 tensorflow_io.bigtable
模块的基本用法和功能。继续操作之前,请确保您熟悉以下主题:
注:Jupyter 以 Shell 命令形式运行前缀为 !
的代码行,并将前缀为 $
的 Python 变量插入到这些命令中。
安装
注:执行下面的代码单元时,系统将要求您登录到 Google Cloud。
对于本示例,使用的是 bigtable 仿真器。如果您已经建立 bigtable 实例并为其填入了值,则跳过这些步骤,直接转到“快速入门”部分。
在后台启动仿真器。
创建表
在表中填入值
快速入门
首先,您需要创建一个客户端和一个要从中读取值的表。
非常棒!现在您可以创建一个 tensorflow 数据集,该数据集将从我们的表中读取数据。
为此,您必须提供希望读取的数据类型、column_family:column_name
格式的列名称列表,以及您希望读取的 row_set。
要创建 row_set,请使用 tensorflow.bigtable.row_set
和 tensorflow.bigtable.row_range
模块中提供的实用方法。此处创建的是包含所有行的 row_set。
请记住,bigtable 按字典顺序读取值,而不是按其放入顺序。行被赋予随机行键,因此它们将被打乱。
就是这样!恭喜恭喜!
并行读取
我们的数据集支持从 Bigtable 并行读取。为此,请使用 parallel_read_rows
方法并将 num_parallel_calls
指定为参数。当调用此方法时,工作是首先基于 SampleRowKey 拆分工作线程。
注:请记住,并行读取时,不会以任何特定顺序读取行。
读取特定的 row_key
要从 Bigtable 读取数据,您可以指定行集、范围或二者组合。
read_rows
方法要求您提供行集。您可以从特定的行键或行范围构造行集,如下所示:
此类 row_set 将包含行范围 [row000, row300)
以及 row585 和 row832 行。
您还可以从无限范围、空范围或前缀创建 row_set。也可以使其与 row_range 相交。
指定值的版本
Bigtable 允许您在一个单元格中保存具有不同时间戳的多个值。您可以使用版本过滤器指定要选择的版本。但是,只能使用 tensorflow.bigtable 连接器检索二维向量,因此 latest
过滤器始终附加到用户指定的版本过滤器。这意味着,如果一个单元格的多个值通过了提供的过滤器,则应使用较新的值。
您可以使用 latest
过滤器传递最新值,也可以指定时间范围。可以将时间范围提供为 python 日期时间对象,或表示自 Epoch 以来的秒数或微秒数的数字。