【问题标题】:How to filter rows from Cloud Bigtable based on timestamp如何根据时间戳过滤 Cloud Bigtable 中的行
【发布时间】: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


【解决方案1】:

正如 cmets 中的 Doug 所指出的,提供的示例代码看起来是正确的,因此这可能是客户端错误。如需进一步诊断,我们建议在the GitHub issue tracker for the cloud-bigtable-client project 中提交问题。

您也可以file a support case with GCP Support 并在此处提供有关您的项目和 Bigtable 实例的具体详细信息。

如前所述,请提供尽可能多的有关如何重现问题的详细信息,例如演示问题的独立示例程序以及特定有问题的客户端库版本将非常有助于进一步诊断问题。

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多