【发布时间】:2019-10-13 05:58:57
【问题描述】:
我正在尝试使用 Python SDK 在 Google Cloud Bigtable 上按多个前缀执行搜索。我正在使用read_rows,但我看不到明确按前缀搜索的好方法。
我的第一个选项是RowSet + RowRange。我正在测试三个查询,我得到的时间是 ~1.5s、~3.5s 和 ~4.2s,这比使用 Node SDK(有一个过滤器)的搜索慢一个数量级选项) ~0.19, ~0.13, ~0.46.
第二个选项是使用RowFilterChain + RowKeyRegexFilter。其中两个查询的性能很糟糕:~3.1s、~70s、~75s~0.124s、~72s、~69s。看起来它正在进行全面扫描。这是代码部分:
regex = f'^{prefix}.*'.encode()
filters.append(RowKeyRegexFilter(regex))
我的第三个选择是使用基于 Happybase 的替代 SDK,它具有前缀过滤功能。有了这个,我得到 ~36s, ~3s, ~1s ~0.4, ~0.1, ~0.17。第一个查询涉及多个前缀,它似乎不支持在同一个请求中进行多个过滤,所以我执行的请求与前缀一样多,然后连接迭代器。另外两个似乎利用了前缀过滤器。
UPDATE:我第一次删除是因为环境有问题。正确执行后,范围查询的时间还不错,但似乎还有改进的余地,因为在利用前缀搜索时,Happybase 测试仍然更快。
非常感谢有关在 Happybase 中使用多个前缀搜索或在主要 Python SDK 中使用实际前缀搜索的帮助。
【问题讨论】:
标签: python google-cloud-bigtable happybase