bigtable 中的数据过滤

问题描述 投票:0回答:1

我的表包含 rowKey 和 2 列。 RowKey 看起来像

string#timestamp
,第一列包含字符串值,第二列包含 json 作为字符串。

        Query query = Query.create(bigTableTableName).range(rowKeyBegining, rowKeyEnd);
        ServerStream<Row> rows = bigtableDataClient.readRows(query);
        for (Row row : rows) {
            //extract cell from row
        }

例如:

        rowKey                  First                 Second
Greg#2023-04-01T12:23:00       cookie               "some JSON data"
Greg#2023-04-03T22:20:54       cake                 "some JSON data"
Greg#2023-04-03T15:03:23       cookie               "some JSON data"
Greg#2023-04-10T20:54:33       salad                "some JSON data"
Greg#2023-04-19T18:00:00       cookie               "some JSON data"
...

我需要检索 Greg#2023-04-01T00:00:00 和 Greg#2023-04-30T23:59:00 之间的时间范围的行范围,但请求应返回第一个列中的值等于“cookie”的行.

有没有办法为第一列添加额外的过滤器?

java google-cloud-platform google-cloud-bigtable bigtable
1个回答
0
投票

和HBase,或者BigTable,是同一个引擎,只能对key(或者key的前缀)进行过滤。因此,请求您要检查的行,然后遍历该行以仅保留符合您条件的行。

这就是为什么 HBase 非常适合像 Spark/Dataproc 这样的分布式系统,如果你有大量的行,可以在集群上分配后处理。

© www.soinside.com 2019 - 2024. All rights reserved.