Hbase过滤器_导图简介+代码

在这里插入图片描述

package com.hbase._181102.filter;

import java.io.IOException;
import java.util.Iterator;

import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.ByteArrayComparable;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FamilyFilter;
import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.filter.QualifierFilter;
import org.apache.hadoop.hbase.filter.RegexStringComparator;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.util.Bytes;

import com.hbase._181101.util.HBasePrintUtil;

public class Filter_p1 {
	
	static Configuration configuration =null;
	private static final String ZK_CONNECT = "moc01:2181,moc02:2181,moc03:2181";
	
	//静态块创建连接
	static {
		configuration=HBaseConfiguration.create();
		configuration.set("hbase.zookeeper.quorum", ZK_CONNECT);
	}
	
	@SuppressWarnings("deprecation")
	public static void main(String[] args) throws IOException {
		//指定需要查询的表
		HTable hTable = new HTable(configuration, "user_info".getBytes());
		Scan scan = new Scan();
		
		/**
		 * 前缀过滤器:查出行键包含指定字串的行
		 */	
//		PrefixFilter filter = new 	PrefixFilter("user".getBytes());
//		scan.setFilter(filter);
		
		/**
		 * 行过滤器:针对行键进行字符串的比较查询
		 */
//		BinaryComparator binaryComparator = new BinaryComparator(Bytes.toBytes("user0000"));
//		RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.GREATER, binaryComparator);
//		scan.setFilter(rowFilter);
		
		/**
		 * 单值过滤器1:通过字符串的字典顺序比较查询值的行
		 */
//		SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("base_info".getBytes(), "name".getBytes(), CompareFilter.CompareOp.EQUAL, "zhangsan1".getBytes());
//		scan.setFilter(singleColumnValueFilter);
		
		/**
		 * 单值过滤器2:正则表达式对值进行判断查询行
		 */
//      ByteArrayComparable comparator = new RegexStringComparator("ba.");
//      SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("base_info".getBytes(), "name".getBytes(), CompareFilter.CompareOp.EQUAL, comparator);
//		scan.setFilter(singleColumnValueFilter);
		
		/**
		 * 单值过滤器3:通过字串的包含与否的比较查询值的行
		 */
//		SubstringComparator substringComparator = new SubstringComparator("a");
//		SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("base_info".getBytes(), "name".getBytes(), CompareFilter.CompareOp.NOT_EQUAL, substringComparator);
//		scan.setFilter(singleColumnValueFilter);
		
		/**
		 * 列簇过滤器:通过列簇的字串比较,查询满足条件的所有信息
		 */
//		FamilyFilter familyFilter = new FamilyFilter(CompareFilter.CompareOp.EQUAL, 
//				new BinaryComparator("base_info".getBytes()));
//		scan.setFilter(familyFilter);
		
		/**
		 * 列过滤器:通过列的字串比较,查询满足条件的所有信息
		 */
		QualifierFilter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL, 
				new BinaryComparator("name".getBytes()));
		scan.setFilter(qualifierFilter);
		
//		scan.addColumn("base_info".getBytes(),"name".getBytes());
//		scan.setStartRow("user0000".getBytes());
//		scan.setStopRow("user0000".getBytes());
		ResultScanner scanner = hTable.getScanner(scan);
		Iterator<Result> iterator = scanner.iterator();
		while(iterator.hasNext()) {
			Result next = iterator.next();
			HBasePrintUtil.printResult(next);
		}
		
	}
}

猜你喜欢

转载自blog.csdn.net/Wh1teMaster/article/details/83653164