hbase的过滤 Filter 之PrefixFilter

本文介绍了如何使用HBase进行数据扫描及过滤操作,通过具体的代码示例展示了如何针对特定行键的数据进行有效检索,并展示了扫描结果的具体内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先来can下表:

hbase(main):004:0> scan 'scores'
ROW COLUMN+CELL
zkb column=course:, timestamp=1356625587787, value=90
zkb column=course:art, timestamp=1356625587791, value=87
zkb column=course:math, timestamp=1356625587789, value=97
zkb column=grade:, timestamp=1356625587776, value=5
1 row(s) in 0.2280 seconds


然后是写的一个scan filter 函数:

public static void scanValueByFilter(String tableName,String row) throws IOException{
HTable table = new HTable(conf, tableName);
Scan scan = new Scan();
scan.setFilter(new PrefixFilter(row.getBytes()));
ResultScanner resultScanner = table.getScanner(scan);
for(Result rs:resultScanner){

for(KeyValue kv:rs.raw()){
StringBuilder sb = new StringBuilder();
System.out.println(sb.append("Row/Family:qual: ").append(new String(kv.getRow())).append("/").append(new String(kv.getFamily())).append(":").append(new String(kv.getQualifier())));
System.out.println("kv.getFamily(): "+new String(kv.getFamily()));
System.out.println("kv.getRow(): "+new String(kv.getRow()));
System.out.println("kv.getQualifier(): "+new String(kv.getQualifier()));
System.out.println("kv.getTimestamp(): "+new String(String.valueOf(kv.getTimestamp())));
System.out.println(new String(kv.getValue()));
System.out.println("---------------------------------");

}
}

}

直接调用: HBaseClient.scanValueByFilter(tablename,"zkb");

结果:

Row/Family:qual: zkb/course:
kv.getFamily(): course
kv.getRow(): zkb
kv.getQualifier():
kv.getTimestamp(): 1356626264657
90
---------------------------------
Row/Family:qual: zkb/course:art
kv.getFamily(): course
kv.getRow(): zkb
kv.getQualifier(): art
kv.getTimestamp(): 1356626264680
87
---------------------------------
Row/Family:qual: zkb/course:math
kv.getFamily(): course
kv.getRow(): zkb
kv.getQualifier(): math
kv.getTimestamp(): 1356626264674
97
---------------------------------
Row/Family:qual: zkb/grade:
kv.getFamily(): grade
kv.getRow(): zkb
kv.getQualifier():
kv.getTimestamp(): 1356626264637
5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值