hbase fuzzyrowfilter钥匙的跳跃如何工作



我知道模糊行滤波器首先采用两个参数为行键,第二个参数为模糊逻辑。我从相应的Java类Fuzzyrowfilter中了解的是,过滤器评估当前行,并尝试计算将匹配模糊逻辑并跳到非匹配键的下一个更高的行键。

我无法理解以下内容

扫描如何跳到某些行键?它是否可以使用并比较当前的行键。扫描如何知道下一个匹配行键的存在?不进行完整扫描(如果跳跃)

您正确理解了所有内容。

对于那些从网络搜索来到这里的人,这里有两个链接,这些链接一般可以利用行跳过,以及如何在fuzzyrowfilter中完成

  1. hbase fuzzyrowfilter:替代辅助索引
  2. HBase中的过滤器(或Intra Row扫描第二部分)

如果过滤器知道它是最后一个钥匙,并且需要跳过:

  1. 过滤器返回SEEK_NEXT_USING_HINT
  2. 区域服务器调用getNextCellhint返回建议的Cell
  3. 区域服务器执行与scan中的第一个密钥的查找密钥完全相同的例程 - 它检查可用的HFiles检查是否存在的密钥是否存在
    1. 区域服务器读取每个文件的"预告片"部分,以获取元数据的偏移
    2. 区域服务器读取元和fileInfo元数据块类型太新(时尚)无法包含我们想要的东西。在此处查看有关HFILE格式的更多信息
    3. 如果密钥在HFILE内部,则区域服务器使用Datablock索引段来计算带有问题的密钥
    4. 如果带有密钥的数据Bock发生在区域服务器块缓存中,则跳过下一步
    5. DataBlock从HFILE读取
    6. 区域服务器最终扫描键,一对一直到击中目标
  4. 找到的键,可能是整个行(取决于过滤器),将其传递给过滤器代码
  5. 整个周期重复

关于HBase密钥的第一件事是保存在词典上排序的 order中,此数据由Meta文件中的HBase Master存储。因此,当应用模糊行滤波器时,它可以直接跳过所有与行键匹配的值。

现在,它要做的就是选择行键,然后扫描钥匙的不确定部分。

例如。如果您的行键范围是123456689 - 123456889然后,您的模糊行滤波器将为123456???-这里发生的是模糊行滤波器跳到以123456开头的行,模糊行滤波器的范围如下如下123456000 - 123456999

相关内容

  • 没有找到相关文章

最新更新