package com.shujia;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
public class Demo04Filter {
Connection conn;
Admin admin;
TableName stuName;
Table stu;
public ResultScanner getScanner(Filter filter) throws IOException {
Scan scan = new Scan();
scan.setFilter(filter);
return stu.getScanner(scan);
}
public void printScanner(ResultScanner rss) {
for (Result rs : rss) {
String id = Bytes.toString(rs.getRow());
String name = Bytes.toString(rs.getValue("info".getBytes(),"name".getBytes()));
String age = Bytes.toString(rs.getValue("info".getBytes(),"age".getBytes()));
String gender = Bytes.toString(rs.getValue("info".getBytes(),"gender".getBytes()));
String clazz = Bytes.toString(rs.getValue("info".getBytes(),"clazz".getBytes()));
System.out.println(id+","+name+","+age+","+gender+","+clazz);
}
}
public void printScannerWithCellUnit(ResultScanner rss){
for (Result rs : rss) {
String rk = Bytes.toString(rs.getRow());
for (Cell cell : rs.listCells()) {
String cf = Bytes.toString(CellUtil.cloneFamily(cell));
String qua=Bytes.toString(CellUtil.cloneQualifier(cell));
String value=Bytes.toString(CellUtil.cloneValue(cell));
System.out.println(rk+","+cf+","+qua+","+value);
}
}
}
@Before
public void init() throws IOException {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","master:2181,node1:2181,node2:2181");
conn = ConnectionFactory.createConnection(conf);
admin= conn.getAdmin();
stuName=TableName.valueOf("stu");
stu=conn.getTable(stuName);
}
@Test
public void RowFilterWithBinaryComparator() throws IOException {
BinaryComparator binaryComparator = new BinaryComparator("1500100010".getBytes());
RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.LESS, binaryComparator);
printScanner(getScanner(rowFilter));
}
@Test
public void FamilyFilterWithSubstringComparator() throws IOException {
SubstringComparator substringComparator = new SubstringComparator("f");
FamilyFilter familyFilter = new FamilyFilter(CompareFilter.CompareOp.EQUAL, substringComparator);
printScannerWithCellUnit(getScanner(familyFilter));
}
@Test
public void QualifierFilterWithSubstringComparator() throws IOException {
RegexStringComparator regexStringComparator = new RegexStringComparator(".*[mld].*");
QualifierFilter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL, regexStringComparator);
printScannerWithCellUnit(getScanner(qualifierFilter));
}
@Test
public void ValueFilterWithBinaryPrefixComparator() throws IOException {
BinaryPrefixComparator binaryPrefixComparator = new BinaryPrefixComparator("张".getBytes());
ValueFilter valueFilter = new ValueFilter(CompareFilter.CompareOp.EQUAL, binaryPrefixComparator);
printScannerWithCellUnit(getScanner(valueFilter));
}
@Test
public void SingleColumnValueFilter() throws IOException {
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("info".getBytes()
, "clazz".getBytes()
, CompareFilter.CompareOp.EQUAL
, new BinaryPrefixComparator("文科".getBytes()));
printScanner(getScanner(singleColumnValueFilter));
}
@Test
public void SingleColumnValueExcludeFilter() throws IOException {
SingleColumnValueExcludeFilter singleColumnValueExcludeFilter = new SingleColumnValueExcludeFilter("info".getBytes()
, "clazz".getBytes()
, CompareFilter.CompareOp.EQUAL
, new BinaryPrefixComparator("文科".getBytes()));
printScanner(getScanner(singleColumnValueExcludeFilter));
}
@After
public void close() throws IOException {
admin.close();
conn.close();
}
}
package com.shujia;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class Demo04Filter {
Connection conn;
Admin admin;
TableName stuName;
Table stu;
public ResultScanner getScanner(Filter filter) throws IOException {
Scan scan = new Scan();
scan.setFilter(filter);
return stu.getScanner(scan);
}
public void printScanner(ResultScanner rss) {
for (Result rs : rss) {
String id = Bytes.toString(rs.getRow());
String name = Bytes.toString(rs.getValue("info".getBytes(),"name".getBytes()));
String age = Bytes.toString(rs.getValue("info".getBytes(),"age".getBytes()));
String gender = Bytes.toString(rs.getValue("info".getBytes(),"gender".getBytes()));
String clazz = Bytes.toString(rs.getValue("info".getBytes(),"clazz".getBytes()));
System.out.println(id+","+name+","+age+","+gender+","+clazz);
}
}
public void printScannerWithCellUnit(ResultScanner rss){
for (Result rs : rss) {
String rk = Bytes.toString(rs.getRow());
for (Cell cell : rs.listCells()) {
String cf = Bytes.toString(CellUtil.cloneFamily(cell));
String qua=Bytes.toString(CellUtil.cloneQualifier(cell));
String value=Bytes.toString(CellUtil.cloneValue(cell));
System.out.println(rk+","+cf+","+qua+","+value);
}
}
}
@Before
public void init() throws IOException {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","master:2181,node1:2181,node2:2181");
conn = ConnectionFactory.createConnection(conf);
admin= conn.getAdmin();
stuName=TableName.valueOf("stu");
stu=conn.getTable(stuName);
}
@Test
public void RowFilterWithBinaryComparator() throws IOException {
BinaryComparator binaryComparator = new BinaryComparator("1500100010".getBytes());
RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.LESS, binaryComparator);
printScanner(getScanner(rowFilter));
}
@Test
public void FamilyFilterWithSubstringComparator() throws IOException {
SubstringComparator substringComparator = new SubstringComparator("f");
FamilyFilter familyFilter = new FamilyFilter(CompareFilter.CompareOp.EQUAL, substringComparator);
printScannerWithCellUnit(getScanner(familyFilter));
}
@Test
public void QualifierFilterWithSubstringComparator() throws IOException {
RegexStringComparator regexStringComparator = new RegexStringComparator(".*[mld].*");
QualifierFilter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL, regexStringComparator);
printScannerWithCellUnit(getScanner(qualifierFilter));
}
@Test
public void ValueFilterWithBinaryPrefixComparator() throws IOException {
BinaryPrefixComparator binaryPrefixComparator = new BinaryPrefixComparator("张".getBytes());
ValueFilter valueFilter = new ValueFilter(CompareFilter.CompareOp.EQUAL, binaryPrefixComparator);
printScannerWithCellUnit(getScanner(valueFilter));
}
@Test
public void SingleColumnValueFilter() throws IOException {
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("info".getBytes()
, "clazz".getBytes()
, CompareFilter.CompareOp.EQUAL
, new BinaryPrefixComparator("文科".getBytes()));
printScanner(getScanner(singleColumnValueFilter));
}
@Test
public void SingleColumnValueExcludeFilter() throws IOException {
SingleColumnValueExcludeFilter singleColumnValueExcludeFilter = new SingleColumnValueExcludeFilter("info".getBytes()
, "clazz".getBytes()
, CompareFilter.CompareOp.EQUAL
, new BinaryPrefixComparator("文科".getBytes()));
printScanner(getScanner(singleColumnValueExcludeFilter));
}
@Test
public void PrefixFilter() throws IOException {
PrefixFilter prefixFilter = new PrefixFilter("150010008".getBytes());
printScanner(getScanner(prefixFilter));
}
@Test
public void PageFilter() throws IOException {
int pageNum=3;
int pageSize=10;
PageFilter pageFilter = new PageFilter((pageNum-1)*pageSize+1);
Scan scan = new Scan();
scan.setFilter(pageFilter);
ResultScanner rss = stu.getScanner(scan);
String rk="";
for (Result rs : rss) {
rk=Bytes.toString(rs.getRow());
}
Scan scan1 = new Scan();
scan1.withStartRow(rk.getBytes());
scan1.setLimit(pageSize);
printScanner(stu.getScanner(scan1));
}
@Test
public void pageWithRk() throws IOException {
int rk_base=1500100000;
int pageNum=7;
int pageSize=10;
String startRow=rk_base+(pageNum-1)*pageSize+1+"";
String endRow=rk_base+pageNum*pageSize+1+"";
Scan scan = new Scan();
scan.withStartRow(startRow.getBytes());
scan.withStopRow(endRow.getBytes());
printScanner(stu.getScanner(scan));
}
@Test
public void FilterList() throws IOException {
SingleColumnValueFilter filter1= new SingleColumnValueFilter("info".getBytes()
, "clazz".getBytes()
, CompareFilter.CompareOp.EQUAL
, new BinaryPrefixComparator("文科一班".getBytes()));
SingleColumnValueFilter filter2 = new SingleColumnValueFilter("info".getBytes()
, "gender".getBytes()
, CompareFilter.CompareOp.EQUAL
, new BinaryPrefixComparator("男".getBytes()));
RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator("8"));
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
filterList.addFilter(filter1);
filterList.addFilter(filter2);
filterList.addFilter(rowFilter);
printScanner(getScanner(filterList));
}
@After
public void close() throws IOException {
admin.close();
conn.close();
}
}