import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.MultipleColumnPrefixFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class ScanFilterTest01 {
public static void main(String[] args) throws IOException {
ScanFilterTest01 test01 = new ScanFilterTest01();
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.quorum", "node1:2181,node2:2181,node3:2181");
Connection connection = ConnectionFactory.createConnection(configuration);
TableName tableName = TableName.valueOf("111:01");
Table table = connection.getTable(tableName);
test01.scanFilter(table);
table.close();
connection.close();
}
private void scanFilter(Table table) throws IOException {
Scan scan = new Scan();
// 需求1:查询2021年1月和2月的数据
/*scan.withStartRow(Bytes.toBytes("202101"));
scan.withStopRow(Bytes.toBytes("202103"));*/
// 需求2:查询2021年的所有数据
/*PrefixFilter prefixFilter = new PrefixFilter(Bytes.toBytes("2021"));
scan.setFilter(prefixFilter);*/
// 需求3:查询所有age = 20的数据
/*SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
Bytes.toBytes("basic"),
Bytes.toBytes("age"),
CompareOperator.EQUAL,
Bytes.toBytes("20")
);
singleColumnValueFilter.setFilterIfMissing(true);
scan.setFilter(singleColumnValueFilter);*/
// 需求4:查询所有数据的name和age这两列
/*byte[][] bytes={Bytes.toBytes("name"),Bytes.toBytes("age")};
MultipleColumnPrefixFilter multipleColumnPrefixFilter = new MultipleColumnPrefixFilter(bytes);
scan.setFilter(multipleColumnPrefixFilter);*/
// 需求5:查询所有年age = 20的人的name和age
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
Bytes.toBytes("basic"),
Bytes.toBytes("age"),
CompareOperator.EQUAL,
Bytes.toBytes("20")
);
singleColumnValueFilter.setFilterIfMissing(true);
byte[][] bytes={
Bytes.toBytes("name"),Bytes.toBytes("age")};
MultipleColumnPrefixFilter multipleColumnPrefixFilter = new MultipleColumnPrefixFilter(bytes);
FilterList filterList = new FilterList();
filterList.addFilter(singleColumnValueFilter);
filterList.addFilter(multipleColumnPrefixFilter);
scan.setFilter(filterList);
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
for (Cell cell : result.rawCells()) {
System.out.println(
Bytes.toString(CellUtil.cloneFamily(cell)) //获取这一列的列族,转换为字符串类型
+ "\t" +
Bytes.toString(CellUtil.cloneQualifier(cell)) //获取这一列的名称,转换为字符串类型
+ "\t" +
Bytes.toString(CellUtil.cloneValue(cell)) //获取这一列的值,转换为字符串类型
+ "\t" +
cell.getTimestamp() //获取时间戳
);
}
System.out.println("-----------------------------------------");
}
}
}
HBase Java API:DML:Filter
Guess you like
Origin blog.csdn.net/tian_1_2_3/article/details/115505799
Recommended
Ranking