【发布时间】:2016-02-02 21:48:11
【问题描述】:
我对过滤器在 HBase 中的工作方式感到困惑(或者,在很大程度上等同于在 HappyBase 中——我用来与 HBase 交互)。我困惑的根源是我似乎无法掌握过滤器的作用。
某些过滤器(例如 SingleColumnValueFilter)会导致不会根据其中一列的值发出行。这是有道理的——在我看来,这就是过滤器的用途。但是,其他过滤器,如FirstKeyOnlyFilter,似乎不是按行过滤,而是过滤呈现给请求者的数据——即,它们过滤columnwise,如@ 987654323@ 参数。不仅如此,它们似乎还会影响其他过滤器是否可以访问数据。
也许我只是用错了。但是,对我来说,“过滤器”应该根据对其属性进行操作的输出来删除项目,例如“找到所有身高超过 7 英尺的人!”但是FirstKeyOnlyFilter 的行为,至少在 HBase 中,似乎更类似于“给我带来所有人的左耳,别无其他!”此外,如果我有这样的过滤器:
SingleColumnValueFilter('body', 'height', =, 'regexstring:^over7ft$') AND FirstKeyOnlyFilter, FirstKeyOnlyFilter 似乎限制第一个过滤器访问列族:列“body:height”。
这个设计选择是什么?上面的过滤器看起来像是在说,“告诉我每个身高正好 7 英尺的人的名字!”但相反,它更像是“如果名字有 7 英尺高,请告诉我每个名字!”行的第一个键没有列,就像名称可以说有一个“高度”一样。
我做错了什么?这是 HappyBase 的特性还是在 HBase 中也一样?
【问题讨论】: