【问题标题】:Is it possible to Scan rows that changed after a certain date in HBase?是否可以扫描在 HBase 中某个日期之后更改的行?
【发布时间】:2015-12-08 09:04:50
【问题描述】:

我需要扫描我的 HBase 表并仅返回在给定时间段(例如:最后一小时)内更改的那些行。请注意,我需要整行,而不仅仅是更改的单元格/值。

该表有数十亿行和几个列族。它会定期更新(有时我们更新整行,有时只更新给定的单元格)。查看文档,似乎TimestampFilter 仅返回“单元格”,而在GetScan 中使用setTimeRange 仅返回“列”。我需要整行,可以通过api吗?如果没有,什么是有效的解决方法?

【问题讨论】:

    标签: java hbase


    【解决方案1】:

    使用 TimestampFilter,您可以获得在给定时间段内写入的单元格。如果您想要整行,那么您需要在该特定行键上执行get。我不认为这是一种有效的方式。
    我建议您构建一个 TimeSeries 表。您可以在行键中使用时间戳作为后缀吗? 查看第 6.3.1 节:http://hbase.apache.org/0.94/book/rowkey.design.html

    如果您需要使用时间戳作为前缀,那么您需要使用salting
    看看这个盐腌:https://phoenix.apache.org/salted.html

    【讨论】:

    • 我无法更改行键 :(
    • @Gevorg:那么您唯一的选择是在使用时间戳过滤器进行扫描后执行 GET。
    【解决方案2】:

    您对整个和仅单个列进行更新的事实使生活变得困难。我在根据时间戳获取计数时遇到了类似的问题。由于时间戳在单元格级别,并且我们只插入整行,因此我使用 map reduce 根据时间戳(格式回溯到日期)进行分组,然后计数。您可以使用类似的列,但您应该选择各个列以及何时修改它们。

    【讨论】:

      猜你喜欢
      • 2012-03-05
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 2019-04-30
      • 2015-06-15
      • 1970-01-01
      相关资源
      最近更新 更多