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

Hbase扫描操作:如何提供条件结束行而不是精确的行键?,hbase,database-scan,Hbase,Database Scan,行键的格式如下: 用户ID资源ID 我知道Hbase中的行是经过排序的,这就是为什么我使用上面显示的行键格式。属于同一用户的资源将堆叠在一起。假设UserID是随机的,但ResourceID是一个简单的计数器,每次添加新资源时都会递增 现在为了获得资源,我不想扫描整个表,这就是为什么我想提供一个起始行和一个结束行。我可以提供起始行,因为我知道UserID,并且我知道ResourceID从0开始,但我不知道有多少资源(或者我不想存储该信息)。我是否可以提供一个条件,如果该条件无效,应停止扫描?类似

行键的格式如下:

用户ID资源ID

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

现在为了获得资源,我不想扫描整个表,这就是为什么我想提供一个起始行和一个结束行。我可以提供起始行,因为我知道UserID,并且我知道ResourceID从0开始,但我不知道有多少资源(或者我不想存储该信息)。我是否可以提供一个条件,如果该条件无效,应停止扫描?类似于如果用户ID更改,则停止扫描

基本上,我希望它找到属于此人的第一个资源,然后遍历列表,因为所有资源都被堆叠在一起,并在找到所有资源后完成


跟进问题:
是否可以提供一个条件,使其仅返回资源的子集,例如列表中属于该人员的最后10个资源

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

我打开一个扫描器,提供起始行为UserID-,停止行为UserID.(诀窍是,当您查看ASCII表格时,点(.)正好在破折号(-)之后,因此当扫描器完成所有以UserID-开头的行时,扫描器停止)

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


至于你的第二个问题,有一些东西你可以添加到你的扫描仪上,它们可以做很多事情,但是没有一种方法只能得到最后10行

我在这里找到了下面问题的答案:你知道什么时候应该使用前缀过滤器,而不是启动和停止吗?