• HBase 过滤器 及shell 操作过滤器


    转自:https://blog.csdn.net/weixin_43603028/article/details/107253178

    比较器 描述
    BinaryComparator 匹配完整字节数组
    BinaryPrefixComparator 匹配字节数组前缀
    BitComparator 匹配比特位
    NullComparator 匹配空值
    RegexStringComparator 匹配正则表达式
    SubstringComparator 匹配子字符串
    行键过滤器
    RowFilter 实现行键字符串的比较和过滤 scan 'Student', FILTER => "RowFilter(=,'substring:0001')"
    行键过滤器 描述 示例
    PrefixFilter 行键前缀比较器,比较行键前缀 scan 'Student', FILTER => "PrefixFilter('0001')"

    scan 'Student', FILTER => "RowFilter(=,'substring:0001')"
    KeyOnlyFilter 只对单元格的键进行过滤和显示,不显示值 scan 'Student', FILTER => "KeyOnlyFilter()"
    FirstKeyOnlyFilter 只扫描显示相同键的第一个单元格,其键值对会显示出来 scan 'Student', FILTER => "FirstKeyOnlyFilter()"
    InclusiveStopFilter 替代 ENDROW 返回终止条件行 scan 'Student', { STARTROW => '0001', FIILTER => "InclusiveStopFilter('binary:0002')" }

    scan 'Student', { STARTROW => '0001', ENDROW => '0003' }
    列族与列过滤器
    针对列族进行过滤的过滤器为 FamilyFilter,其语法结构与 RowFilter 类似,不同之处在于 FamilyFilter 是对列族名称进行过滤的。

    例如,以下命令扫描Student表显示列族为 Grades 的行。

    scan 'Student', FILTER=>" FamilyFilter(= , 'substring:Grades')"


    列过滤器 描述 示例
    QualifierFilter 列标识过滤器,只显示对应列名的数据 scan 'Student', FILTER => "QualifierFilter(=,'substring:Math')"
    ColumnPrefixFilter 对列名称的前缀进行过滤 scan 'Student', FILTER => "ColumnPrefixFilter('Ma')"
    MultipleColumnPrefixFilter 可以指定多个前缀对列名称过滤 scan 'Student', FILTER => "MultipleColumnPrefixFilter('Ma','Ag')"
    ColumnRangeFilter 过滤列名称的范围 scan 'Student', FILTER => "ColumnRangeFilter('Big',true,'Math',false')"
    上表中 QualifierFilter 和 ColumnPrefixFilter 过滤效果类似,只是 ColumnPrefixFilter 无须结合运算符和比较器即可完成字符串前缀的过滤。

    MultipleColumnPrefixFilter 过滤器是对 ColumnPrefixFilter 的延伸,可以一次过滤多个列前缀。

    ColumnRangeFilter过滤器则可以扫描出符合过滤条件的列范围,起始和终止列名用单引号引用,true 和 false 参数可指明结果中包含的起始或终止列。

    值过滤器
    在 HBase 的过滤器中也有针对单元格进行扫描的过滤器,即值过滤器,如下表所示。

    值过滤器描述
    值过滤器 描述 示例
    ValueFilter 值过滤器,找到符合值条件的键值对 scan 'Student', FILTER => "ValueFilter(=,'substring:curry')"

    get 'Student', '0001', FILTER => "ValueFilter(=,'substring:curry')"
    SingleColumnValueFilter 在指定的列族和列中进行比较的值过滤器 scan 'Student', Filter => "SingleColumnValueFilter('StuInfo', 'Name', =, 'binary:curry')"
    SingleColumnValueExcludeFilter 排除匹配成功的值 scan 'Student', Filter => "SingleColumnValueExcludeFilter('StuInfo', 'Name', =, 'binary:curry')"
    ValueFilter 过滤器可以利用 get 和 scan 方法对单元格进行过滤,但是使用 get 方法时,需要指定行键。

    SingleColumnValueFilter 和 SingleColumnValueExcludeFilter 过滤器扫描的结果是相反的, 都需要在过滤条件中指定列族和列的名称。

    其他过滤器
    还有一些其他的过滤器,其过滤方式和示例如下表所示。

    其他过滤器描述
    值过滤器 描述 示例
    ColumnCountGetFilter 限制每个逻辑行返回键值对的个数,在 get 方法中使用 get 'Student', '0001', FILTER => "ColumnCountGetFilter(3)"
    TimestampsFilter 时间戳过滤,支持等值,可以设置多个时间戳 scan 'Student', Filter => "TimestampsFilter(1,4)"
    InclusiveStopFilter 设置停止行 scan 'Student', { STARTROW => '0001', ENDROW => '0005', FILTER => "InclusiveStopFilter('0003')" }
    PageFilter 对显示结果按行进行分页显示 scan 'Student', { STARTROW => '0001', ENDROW => '0005', FILTER => "PageFilter(3)" }
    ColumnPaginationFilter 对一行的所有列分页,只返回 [offset,offset+limit] 范围内的列 scan 'Student', { STARTROW => '0001', ENDROW => '0005', FILTER => "ColumnPaginationFilter(2,1)" }
    ColumnCountGetFilter 过滤器限制每个逻辑行返回多少列,一般不用在 scan 方法中,Timestamps Filter 匹配相同时间戳的数据。

    InclusiveStopFilter过滤器设置停止行,且包含停止的行,上表中示例最终展示数据为行键 0001〜0003 范围内的数据。PageFilter 设置每页最多显示多少逻辑行, 示例中显示三个逻辑行。

    ColumnPaginationFilter过滤器对一个逻辑行的所有列进行分页显示。
    ————————————————
    版权声明:本文为CSDN博主「driver1999」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_43603028/article/details/107253178

  • 相关阅读:
    java学习day02---Spring Boot综合运用---活动模块
    java学习day01---GC
    课程学习总结报告
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
    深入理解系统调用
    基于mykernel 2.0编写一个操作系统内核
    超码 候选码 主码 替换码 数据库 定义
    如何评测软件工程知识技能水平?
    创新产品的需求分析:未来的图书会是什么样子?
    案例分析:设计模式与代码的结构特性(桥接模式)
  • 原文地址:https://www.cnblogs.com/linwenbin/p/14988002.html
Copyright © 2020-2023  润新知