【发布时间】:2019-09-27 16:17:34
【问题描述】:
我正在使用 HBase API 连接到 Cloud Bigtable。我需要过滤掉特定时间范围内的记录。
Cloud Bigtable 中存储的数据格式如下:
"12345"
a:b @ 2019/04/28-23:21:21.553000
"ab"
a:c @ 2019/04/28-23:21:21.553000
"ac"
b:d @ 2019/04/28-23:21:21.553000
"bd"
尝试使用 setTimeRange() 方法使用 Scan 操作获取数据不会返回任何行。下面是它的代码:
Scan scan = new Scan();
scan.setTimeRange(1556493680, 1556493690);
如何根据时间戳获取行?任何帮助表示赞赏。
【问题讨论】:
-
如果省略setTimeRange,能否确认返回数据?据我所知,您所做的应该可以正常工作,所以我想知道是否还有其他配置错误。
-
另一种可能性是 HBase shell 正在打印您当地时区的时间戳。如果打印的戳记是 UTC,则您的 unix 时间戳是正确的,但如果在幕后发生转换,则将是错误的。
-
@DouglasMcErlean 是的,如果删除了 setTimeRange,它会返回数据。此外,数据是连续流动的,因此无论是哪种时间格式,BigTable 中都应该存在数据
-
是否保证任何特定的 10s 范围都包含数据?如果将范围扩大到包括一整天,会发生什么?
-
这听起来像是一个客户端错误。您可以在此处提交有关如何重现的详细信息的问题吗? github.com/googleapis/cloud-bigtable-client/issues
标签: java hbase bigtable google-cloud-bigtable