HBase是一个基于列的NoSQL数据库,它提供了强大的数据查询功能
employees
的表,其中包含id
(行键)、name
(列族)和age
(列限定符)三个列族。create 'employees', {NAME => 'name'}, {NAME => 'age'}
put 'employees', '1', 'name:John', 'age:30' put 'employees', '2', 'name:Jane', 'age:28'
import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.filter.*; public class HBaseFilterExample { public static void main(String[] args) throws Exception { // 创建连接 Configuration conf = HBaseConfiguration.create(); Connection connection = ConnectionFactory.createConnection(conf); Admin admin = connection.getAdmin(); // 获取表 TableName tableName = TableName.valueOf("employees"); Table table = connection.getTable(tableName); // 创建扫描器 Scan scan = new Scan(); // 创建过滤器 Filter filter = new SingleColumnValueFilter(Bytes.toBytes("age"), CompareFilter.CompareOp.GREATER_OR_EQUAL, Bytes.toBytes(30)); scan.setFilter(filter); // 执行查询 ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { System.out.println("Found row: " + result); } // 关闭资源 scanner.close(); table.close(); admin.close(); connection.close(); } }
在这个示例中,我们首先创建了一个Scan
对象,然后创建了一个SingleColumnValueFilter
对象,用于过滤年龄大于等于30岁的员工。最后,我们将过滤器添加到扫描器中并执行查询。
HBase支持多种类型的过滤器,例如SingleColumnValueFilter
、MultipleColumnValueFilter
、RowFilter
等。你可以根据实际需求选择合适的过滤器类型。更多关于HBase过滤器的用法,可以参考官方文档:https://hbase.apache.org/book.html#_filters
注意:在实际应用中,你需要根据自己的需求和环境调整代码。