面试题答案
一键面试- 过滤器组合:使用
SingleColumnValueFilter
和CompareFilter.CompareOp.GREATER
。 - 具体步骤及过滤器使用方法:
- 创建
SingleColumnValueFilter
实例:import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.util.Bytes; // 假设列族为cf,列为col,给定值为targetValue byte[] family = Bytes.toBytes("cf"); byte[] qualifier = Bytes.toBytes("col"); byte[] targetValue = Bytes.toBytes("给定值"); SingleColumnValueFilter filter = new SingleColumnValueFilter( family, qualifier, CompareFilter.CompareOp.GREATER, targetValue );
- 应用过滤器:在扫描(
Scan
)操作中设置该过滤器。import org.apache.hadoop.hbase.client.Scan; Scan scan = new Scan(); scan.setFilter(filter);
- 执行扫描:通过
HBase
的Table
对象执行扫描操作获取结果。import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Table; try (Connection connection = ConnectionFactory.createConnection(); Table table = connection.getTable(TableName.valueOf("表名"))) { ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { // 处理查询到的结果 System.out.println(result); } } catch (IOException e) { e.printStackTrace(); }
- 创建
SingleColumnValueFilter
用于在每行中根据指定列族下特定列的值进行过滤,CompareOp.GREATER
指定比较操作是大于给定值。通过以上步骤,可以实现查询某一列族下特定列且列值大于某个给定值的数据。