首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行google.cloud.happybase Bigtable RowKeyRegexFilter扫描

执行google.cloud.happybase Bigtable RowKeyRegexFilter扫描
EN

Stack Overflow用户
提问于 2017-03-30 02:26:09
回答 1查看 373关注 0票数 0

更新:这只发生在Google模拟器上,而不是在实际开发或生产Bigtable实例(GoogleCloudSDK149.0.0)中。

我试图通过键regex过滤器进行行过滤,一切都像符咒一样工作(按前缀过滤、按键开始和停止范围过滤、按键过滤、按键过滤),但我无法让它作为过滤器在RowKeyRegexFilter中工作,它只是将所有的键作为一个空键scan返回

代码语言:javascript
复制
# all the boilerplate to create a happybase connection skipped 
t = connection.table("sometable")
t.put(
    b'row1',
    {
       b"family1:col2": b".1",
       b"family2:col2": b".12",
    }
)
t.put(
    b'row2',
    {
       b"family1:col2": b".2",
       b"family2:col2": b".22",
    }
)
t.put(
    b'row3',
    {
       b"family1:col2": b".3",
       b"family2:col2": b".32",
    }
)
rows = t.scan(
    filter=RowKeyRegexFilter(b'.+3')
)
print(len([i for i in rows])

这总是给出了3,无论您将(nomatchforsure)+作为regex,我都找不到任何带有工作示例的文档,最令人惊讶的是,google.cloud.happybase.table.Table.rows总是使用RowKeyRegexFilter执行逐行键筛选,但是将regex传递到rows方法而不是真正的行键也不会进行regex筛选,您可以看到它。

这里:https://github.com/GoogleCloudPlatform/google-cloud-python-happybase/blob/master/src/google/cloud/happybase/table.py#L197

在这里:https://github.com/GoogleCloudPlatform/google-cloud-python-happybase/blob/master/src/google/cloud/happybase/table.py#L971

如果能在这方面提供任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-30 22:57:47

UPDATE:正如@gary注意到的那样,它实际上是在文档中注释的:https://cloud.google.com/bigtable/docs/emulator#filters正则表达式必须只包含有效的UTF-8字符,而实际的Cloud服务可以将正则表达式处理为任意字节。虽然像(notmatchforsure)+这样简单的东西也不起作用,尽管它似乎包含有效的UTF8字符,但在我的测试中,我想说它是不受限制的,但一般来说,它不起作用。无论如何,在文档中是正确的警告。

实际的问题是模拟器上的bug,我更新了答案以避免错误的反馈,解决方案是创建一个用于测试代码的开发实例,所以现在如果您想要在BigTable中使用Regex过滤器进行一些开发,您必须创建(并支付.)至少一个开发实例(响应时为0.65美元/小时,0.17美元/GB)。希望这会有帮助,就好像有人在期待着和仿真器一起玩一样,他可以像我一样被困住几个小时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43107422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档