HBASE扫描 - Rowkey过滤器



所以,让我们看看我是否可以简要解释我的问题。

想象我们有一个HBASE表,该表有每次访问迪斯科的信息:每个迪斯科唱片都会记录其名称,访问者的名称 day 访问了它。(是的,这是一个愚蠢的例子,我知道 .. )。

所以,例如,这些将是表的某些值:

..
ministryOfSoundJamesOliver01022017
ministryOfSoundJamesOliver02022017
ministryOfSoundJamesOliver03022017
ministryOfSoundOliviaNewton04042017
ministryOfSoundOliviaNewton06042017
...
pachaibizaJohnMcKiness06042017
pachaibizaJohnMcKiness04042017
pachaibizaWilliamForrester04042017
..

RowKey 具有以下结构:

DISCONAME

personname

dayofthyear

(该表还有其他一些列/预选赛,但我不介意此问题)。


问题是:想象一个男孩,只是喜欢去声音部。他只是喜欢它,他把所有的钱都花在迪斯科和毒品上(,但这不是这里的重点)。

我的目标是输出每个参加声音部的人。在我的扫描中,这个家伙不断出现在结果中,因此我必须丢弃很多条目,以寻找下一个访问者。F.E:

..
ministryOfSoundJohnnyYonkie01022017
ministryOfSoundJohnnyYonkie02022017
ministryOfSoundJohnnyYonkie03022017
ministryOfSoundJohnnyYonkie04022017
ministryOfSoundJohnnyYonkie05022017
ministryOfSoundAnotherDude02022017
...

为了注册 enterndude ,我必须从 Johnny 中丢弃4个条目。

最后,问题是:


是否有任何方法告诉HBase,重复的条目从字节(x)到字节(x y)[ x 是来自discoName的字节数,并且personName的字节数和y的字节数]必须是自动丢弃


预先感谢!

首先:如果您只能访问客户端,我将无法帮助您:(

如果您有其他访问权限,则可以查看以下命题,但是默认答复将为:如果这是您的访问模式,请优化您的模式。

如果您需要以某种方式访问数据,请确保首先以这种方式编写数据。如果您必须执行迁移,请使用地图还原API。

我可能会简单地添加一张表,该表仅写下一个访问者的行和每个访问者的列。(通常,您提出的模式听起来不太适合HBase - 因为您有很多单调增加的rowkeys写作,如果后处理重复的结果确实是一个性能问题)

另一方面,如果这是一个临时查询,那么您可能想立即使用mapReduce-api-也许使用apache spark-interConnect并对数据执行"独特的"调用。p>使用扫描进行分析查询不是我的方式。

如果您必须使用扫描进行操作,那么我建议您实现协处理器。这些可以通过状态增强过滤器,您可以在区域服务器端扫描前换器的结果。如果您是协作者的新手,这里是一个简介:HBASE:"权威指南"。这就要求您可以将罐子部署到gearmionserver classpath中。

但是,如果您在那里进行独特的过滤来炸毁客户,则由于插入物上的热点,您可能也炸毁了区域。

作为最终替代方案:您可能想查看Apache Phoenix,看看是否可以将Rowkey胁到架构,您可以在其中进行选择,从而在Rowkey的前两个部分中进行选择。这显然需要您的罗基有定界符,或者至少有固定的长度。

最新更新