是否可以扫描HBase中特定日期之后更改的行?

时间:2015-09-11 18:07:46

标签: java hbase

我需要扫描我的HBase表并仅返回在给定时间段内更改的行(EG:last hours)。请注意,我需要整行,而不仅仅是更改的单元格/值。

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您对整个且仅对单个列进行更新的事实会使生活变得困难。我有一个类似的问题,根据时间戳得到计数。由于时间戳是在单元级别,并且我们只插入整行,因此我使用map reduce to group to based time stamp(format to date),然后计数。除了您应该选择各个列以及修改它们时,您可以使用类似的列。