1

行键采用以下格式:

用户 ID-资源 ID

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

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

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


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

4

1 回答 1

1

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

我打开一个扫描仪并提供作为UserID-的起始行和作为 UserID 的停止行(诀窍在于,当您查看 ASCII 表时,点 (.) 就在破折号 (-) 之后,因此当它完成所有以 UserID 开头的行时,扫描仪会停止)

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

至于您的第二个问题,您可以将一些称为过滤器的东西添加到扫描仪中,它们可以做很多事情,但它们都没有办法只获取最后 10 行

于 2014-02-05T14:37:50.343 回答