rowfilter,根据rowkey.substr进行过滤,测试结果过滤
package cn.com.my.mycompany.query;
import cn.com.my.mycompany.util.Close;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.security.UserGroupInformation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
public class RowFilterQuery {
static Logger logger = LoggerFactory.getLogger(RowFilterQuery.class);
private static Connection connection;
private static HTable hTable;
public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.property.clientPort", "2181");
conf.set("hbase.zookeeper.quorum", "bigdata-m-001,bigdata-m-002,bigdata-m-003");
conf.set("hbase.master", "bigdata-m-001:60000");
conf.set("hadoop.security.authentication", "Kerberos");
conf.set("hbase.security.authentication", "Kerberos");
conf.set("hbase.master.kerberos.principal", "hbase/bigdata-m-001.bigdata.com@BIGDATA.COM");
conf.set("hbase.regionserver.kerberos.principal", "hbase/_HOST@BIGDATA.COM");
UserGroupInformation.setConfiguration(conf);
connection = ConnectionFactory.createConnection(conf);
try {
UserGroupInformation.loginUserFromKeytab("hbase@BIGDATA.COM", "/keytab/hbase.keytab");
}
catch (IOException e) {
logger.error("HBase namespace create fail due to: " + e.getLocalizedMessage());
e.printStackTrace();
}
//子串包含
String[] qualifiers=new String[]{args[2]};//列名称
int num=new Integer(args[4]);
rowFilterSubString(
conf,
args[0], //表名称
args[1], //列簇名称
qualifiers,//列的合集
args[3], //包含的内容
CompareOp.EQUAL,
num);
Close.CloserConn(connection);
}
//基于行键过滤器
public static void rowFilterSubString(Configuration conf,
String tablename,
String cfName,
String[] qualifiers,
String substr,
CompareOp operator,
int num){
try{
System.out.println("================子串过滤器====================");
hTable = new HTable(conf, tablename.getBytes());
Scan scan = new Scan();
for(String name:qualifiers){
scan.addColumn(Bytes.toBytes(cfName),Bytes.toBytes(name));
}
Filter filter = new RowFilter(operator,new SubstringComparator(substr));
scan.setCaching(num);
scan.setFilter(filter);
ResultScanner scanner = hTable.getScanner(scan);
for (Result result : scanner){
for (Cell cell:result.rawCells()){
System.out.println("Cell: "+cell+", Value: "+Bytes.toString(cell.getValueArray(),cell.getValueLength()));
}
}
//resultlog(scanner);
Close.CloseScanner(scanner);
Close.CloseTable(hTable);
}catch (IOException e){
e.printStackTrace();
}
}
}
Hbase Filter 总结s
最新推荐文章于 2023-12-20 10:52:51 发布