我的表包含 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”的行.
有没有办法为第一列添加额外的过滤器?
和HBase,或者BigTable,是同一个引擎,只能对key(或者key的前缀)进行过滤。因此,请求您要检查的行,然后遍历该行以仅保留符合您条件的行。
这就是为什么 HBase 非常适合像 Spark/Dataproc 这样的分布式系统,如果你有大量的行,可以在集群上分配后处理。