Hbase FuzzyRowFilter键跳跃的工作原理

Hbase FuzzyRowFilter键跳跃的工作原理,hbase,bigdata,hfile,Hbase,Bigdata,Hfile,我知道模糊行过滤器有两个参数,第一个是行键,第二个是模糊逻辑。 我从相应的java类FuzzyRowFilter中了解到, 过滤器计算当前行,并尝试计算下一个更高的行键,该行键将与模糊逻辑匹配,并跳过不匹配的键 我无法理解下面的事情 如何扫描某些行键?是否使用Get来获取和比较当前行键。 如何知道下一个匹配行键存在的位置?如果不进行完整扫描(如果跳转)了解hbase键的第一件事是按字典排序的顺序保存,该数据由hbase主机存储在元文件中。因此,当应用模糊行过滤器时,它可以直接跳过所有与行键不匹配

我知道模糊行过滤器有两个参数,第一个是行键,第二个是模糊逻辑。 我从相应的java类FuzzyRowFilter中了解到, 过滤器计算当前行,并尝试计算下一个更高的行键,该行键将与模糊逻辑匹配,并跳过不匹配的键

我无法理解下面的事情

如何扫描某些行键?是否使用Get来获取和比较当前行键。
如何知道下一个匹配行键存在的位置?如果不进行完整扫描(如果跳转)

了解hbase键的第一件事是按字典排序的顺序保存,该数据由hbase主机存储在元文件中。因此,当应用模糊行过滤器时,它可以直接跳过所有与行键不匹配的值

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

例如,如果您的行键范围是
123456689-123456889

然后您的模糊行过滤器将是
123456???
-这里发生的是模糊行过滤器跳转到以
123456
开头的行,模糊行过滤器的范围如下
123456000-123456999

您正确理解了所有内容

对于那些从web search来到这里的人,这里有两个链接,解释了一般情况下如何利用行跳过,特别是在FuzzyRowFilter中如何实现

  • 如果筛选器知道它位于最后一个键,需要跳过:

  • 过滤返回
  • 区域服务器调用,返回建议的
  • Region Server执行的查找密钥的例程与在
    扫描中查找第一个密钥的例程完全相同-它检查可用的HFiles,检查有问题的密钥是否存在
    
  • 区域服务器读取每个文件的“拖车”部分,以获取元数据块的偏移量
  • 如果密钥不存在(Bloom Filter)、文件太旧(Max SequenceId)或文件太新(时间范围)无法包含我们要查找的内容,Region Server将读取Meta和FileInfo元数据块类型,以避免从hfile读取二进制数据。了解更多关于
  • 如果密钥位于HFile内,Region Server将使用数据块索引段来计算到有密钥的数据块位置的偏移量
  • 如果带有密钥的数据块已经在区域服务器块缓存中,则跳过下一步
  • 从HFile读取数据块
  • 区域服务器最终会逐个扫描密钥,直到命中目标密钥
  • 找到的键和可能的整行(取决于过滤器)被传递给过滤器代码
  • 整个循环重复