gpt4 book ai didi

HBase 扫描 - RowKey 过滤器

转载 作者:太空狗 更新时间:2023-10-30 01:57:01 26 4
gpt4 key购买 nike

那么,让我们看看我能否简要解释一下我的问题。

假设我们有一个 HBase 表,其中包含每次访问迪斯科舞厅的信息:每个迪斯科舞厅都会记录其姓名、访问者的姓名以及访问者的日期。 (是的,这是一个愚蠢的例子,我知道..)。

因此,例如,这些将是表的一些值:

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

RowKey 具有以下结构:

discoName

personName

dayOfTheYear

(该表还有其他一些列/限定符,但对于这个问题我不介意它们)。


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

我的目标是输出每个参加 Ministry Of Sound 的人。在我的扫描中,这个家伙一直出现在结果中,所以我必须丢弃很多条目来寻找下一个访客。 F.E:

..
ministryOfSoundJohnnyYonkie01022017
ministryOfSoundJohnnyYonkie02022017
ministryOfSoundJohnnyYonkie03022017
ministryOfSoundJohnnyYonkie04022017
ministryOfSoundJohnnyYonkie05022017
ministryOfSoundAnotherDude02022017
...

为了注册 AnotherDude,我必须放弃 Johnny 的 4 个条目。

最后,问题是:


有什么方法可以告诉 HBase 从 byte(x) 到 byte(x+y) [ x 是来自 discoName 的字节数和y 来自 personName ] 的字节数必须自动丢弃


提前致谢!

最佳答案

首先要注意的是:如果您只有客户端访问权限,我帮不了您 :(

如果您有额外的访问权限,那么您可以查看以下建议,但默认回复是:如果这是您的访问模式,请针对它优化您的架构。

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

我可能会简单地添加一个表,该表只为每个访问者写一行 ministerOfSound 和一列。 (一般来说,您提出的模式听起来不太适合 HBase - 因为您有一堆单调增加行键的写入,如果对重复结果进行后处理确实是一个性能问题)

另一方面,如果这是一个临时查询,那么您可能想直接使用 mapreduce-API - 也许使用 Apache Spark-interconnect 并对数据执行“不同”调用。

将扫描用于分析查询不是我的做法。

如果您必须使用扫描来完成,那么我建议您实现协处理器。这些可以使用状态来增强 Filter,并且您可以在 Region Server 端投影 PrefixFilter's Scan 的结果。如果您是 CoProcessors 的新手,这里有一个介绍:HBase: The Definitive Guide .这要求您可以将 jar 部署到 RegionServer 类路径中。

但同样,如果您通过在那里进行不同的过滤来破坏您的客户端,您可能也会因为插入物上的热点而破坏您的区域。

作为最后一个选择:您可能想看看 Apache Phoenix,看看是否可以将您的行键强制转换为一个架构,您可以从该架构中对行键的前两部分执行不同的选择。这显然需要您在 rowkey 中有分隔符,或者至少是固定长度。

关于HBase 扫描 - RowKey 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42673146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com