首页 > 解决方案 > 如何在 python bigtable 中进行分页

问题描述

我试图在读取 TB 数据时在 bigtable 中使用 python 进行分页,但没有任何想法。能否请您帮忙,或者可以在bigtable中附上python分页的示例代码。

标签: python-3.xgoogle-cloud-bigtable

解决方案


您可以像这样扫描您的表,read_rows 将为您提供一个迭代器:

def read_prefix(project_id, instance_id, table_id):
    client = bigtable.Client(project=project_id, admin=True)
    instance = client.instance(instance_id)
    table = instance.table(table_id)
    prefix = "phone#"
    end_key = prefix[:-1] + chr(ord(prefix[-1]) + 1)

    row_set = RowSet()
    row_set.add_row_range_from_keys(prefix.encode("utf-8"),
                                    end_key.encode("utf-8"))

    rows = table.read_rows(row_set=row_set)
    for row in rows:
        print_row(row)

read_rows 返回一个处理重试的PartialRowsData对象,因此如果您的操作需要一定数量的项目,您可以像这样在 for 循环中添加一个计数器,它应该具有与分页相同的效果:

count = 0
page_size = 10
for row in rows:
    print_row(row)
    count++
    if count % page_size == 0:
        # Do your action based on page size

还有更多例子展示


推荐阅读