设为首页 加入收藏

TOP

hbase 过滤器 rowfilter(一)
2019-09-17 18:54:00 】 浏览:57
Tags:hbase 过滤器 rowfilter

HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作,也就是说过滤器最终能够筛选的数据能够细化到具体的一个存储单元格上(由行键,列明,时间戳定位)。通常来说,通过行键,值来筛选数据的应用场景较多。

 

1.创建测试表studnet1

 

Vi Student1.java

import java.io.IOException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.client.Put;

public class Student1{
  public static void main(String[] args){
    HBaseConfiguration config = new HBaseConfiguration();
    config.set("hbase.zookeeper.quorum", "h201,h202,h203");   
    String tablename = new String("student1");
   try{
    HBaseAdmin admin = new HBaseAdmin(config);
    if(admin.tableExists(tablename)){
       admin.disableTable(tablename);
       admin.deleteTable(tablename);
      }
     HTableDescriptor tableDesc = new HTableDescriptor(tablename);
     tableDesc.addFamily(new HColumnDescriptor("cf1"));
          
     admin.createTable(tableDesc);
     admin.close();

      HTable table = new HTable(config, Bytes.toBytes("student1"));
      Put put1 = new Put(Bytes.toBytes("a101"));
      put1.add(Bytes.toBytes("cf1"),Bytes.toBytes("name"),Bytes.toBytes("zs1"));

      Put put2 = new Put(Bytes.toBytes("a102"));
      put2.add(Bytes.toBytes("cf1"),Bytes.toBytes("name"),Bytes.toBytes("ls1"));

      Put put3 = new Put(Bytes.toBytes("a103"));
      put3.add(Bytes.toBytes("cf1"),Bytes.toBytes("name"),Bytes.toBytes("ww1"));

      table.put(put1);
      table.put(put2);
      table.put(put3);
      table.close();
    } catch(IOException e) {
            e.printStackTrace();
        }
  }
}
  1. 使用过滤器

1.1

RowFilter:筛选出匹配的所有的行,对于这个过滤器的应用场景,是非常直观的:使用BinaryComparator可以筛选出具有某个行键的行,或者通过改变比较运算符(CompareFilter.CompareOp.EQUAL)来筛选出符合某一条件的多条数据

RowFilter用于过滤row key

Operator

Description

LESS

小于

LESS_OR_EQUAL

小于等于

[EQUAL

等于

NOT_EQUAL

不等于

GREATER_OR_EQUAL

大于等于

GREATER

大于

NO_OP

排除所有

 

Comparator

Description

BinaryComparator

使用Bytes.compareTo()比较

BinaryPrefixComparator

BinaryComparator差不多,从前面开始比较

RegexStringComparator

正则表达式

SubstringComparator

把数据当成字符串,用contains()来判断

import java.io.IOException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.CompareFilter;

public class hss1{

  public static void main(String[] args){
   HBaseConfiguration config = new HBaseConfiguration();
   config.set("hbase.zookeeper.quorum", "h201,h20
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Mysql5.7登录错误1045和1130的解.. 下一篇记一次异机rman还原后的操作

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目