Using a Filter
Function Description
HBase Filter is used to filter data during Scan and Get. You can specify the filter criteria, such as filtering by RowKey, column name, or column value.
Sample Code
The following code snippets are in the testFilterList method in the HBaseSample class of the com.huawei.bigdata.hbase.examples packet.
public void testFilterList() {
LOG.info("Entering testFilterList.");
Table table = null;
// Instantiate a ResultScanner object.
ResultScanner rScanner = null;
try {
// Create the Configuration instance.
table = conn.getTable(tableName);
// Instantiate a Get object.
Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"));
// Instantiate a FilterList object in which filters have "and"
// relationship with each other.
FilterList list = new FilterList(Operator.MUST_PASS_ALL);
// Obtain data with age of greater than or equal to 20.
// For MRS 2.0.0 or later, replace CompareOp with CompareOperator.
list.addFilter(new SingleColumnValueFilter(Bytes.toBytes("info"), Bytes.toBytes("age"),
CompareOp.GREATER_OR_EQUAL, Bytes.toBytes(new Long(20))));
// Obtain data with age of less than or equal to 29.
// For MRS 2.0.0 or later, replace CompareOp with CompareOperator.
list.addFilter(new SingleColumnValueFilter(Bytes.toBytes("info"), Bytes.toBytes("age"),
CompareOp.LESS_OR_EQUAL, Bytes.toBytes(new Long(29))));
scan.setFilter(list);
// Submit a scan request.
rScanner = table.getScanner(scan);
// Print query results.
for (Result r = rScanner.next(); r != null; r = rScanner.next()) {
for (Cell cell : r.rawCells()) {
LOG.info(Bytes.toString(CellUtil.cloneRow(cell)) + ":"
+ Bytes.toString(CellUtil.cloneFamily(cell)) + ","
+ Bytes.toString(CellUtil.cloneQualifier(cell)) + ","
+ Bytes.toString(CellUtil.cloneValue(cell)));
}
}
LOG.info("Filter list successfully.");
} catch (IOException e) {
LOG.error("Filter list failed ", e);
} finally {
if (rScanner != null) {
// Close the scanner object.
rScanner.close();
}
if (table != null) {
try {
// Close the HTable object.
table.close();
} catch (IOException e) {
LOG.error("Close table failed ", e);
}
}
}
LOG.info("Exiting testFilterList.");
} Last Article: Reading Data Using Scan
Next Article: Adding a Secondary Index
Did this article solve your problem?
Thank you for your score!Your feedback would help us improve the website.