Hbase扫描操作:如何提供条件结束行而不是精确的行键?

时间:2014-01-31 08:01:42

标签: hbase database-scan

行键的格式如下:

用户ID-的ResourceID

我知道Hbase中的行是排序的,这就是为什么我有上面显示的行键格式。属于同一用户的资源将堆叠在一起。假设UserID是随机的,但ResourceID是一个简单的计数器,并且每次添加新资源时都会递增。

现在要获取资源,我不想扫描整个表,这就是我想提供起始行和结束行的原因。我可以提供起始行,因为我知道UserID,我知道ResourceID从0开始,但我不知道有多少资源,(或者我不想存储该信息)。我可以提供一个条件,如果无效,应该停止扫描吗?像UserID更改然后停止扫描的东西。

基本上,我希望它找到属于该人的第一个资源,然后沿着列表向下走,因为所有资源都堆叠在一起,并在找到所有资源后完成。


后续-问题: 是否有可能提供一个条件,以便它只返回资源的一个子集,例如列表中属于该人的最后10个资源。

1 个答案:

答案 0 :(得分:1)

对于您的第一个问题,这就是我所做的(我应该注意,您提供给扫描仪的开始和停止行不一定是真实的):

我打开扫描仪并将起始行设为 UserID - ,将停止行设为 UserID。(诀窍是当您查看ASCII表时,点(。)就在破折号( - )之后,所以当它完成所有以 UserID - 开头的行时,扫描仪会停止)

这样您就不需要知道实际的第一个资源,甚至不需要知道最后一个资源,您只需要知道用户

至于你的第二个问题,有一些叫做Filters的东西可以添加到你的扫描仪中,它们可以做很多事情,但是它们都没有办法只获得最后10行< / p>