hbase通过row key 的前缀查询记录
2012-10-23 17:38
387 查看
如果你在hbase表中存在一些特征相同的记录,实际上就可以通过设置Filter的方式进行检索过滤。
比如这个特征是前缀相同。
ROW COLUMN+CELL Jerry column=info:sex, timestamp=1318853623294, value=male
Jerry1 column=info:sex, timestamp=1318917602868, value=male Jerry2 column=info:sex, timestamp=1318917789851, value=male
可以发现这三条记录都是以Jerry开头的row key.
那么我们如何检索呢。很简单。
如果是在hbase shell中
scan ‘scores’, {FILTER => org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes(‘Jerry’))}
如果是java 客户端
public void scaneByPrefixFilter(String tablename, String rowPrifix) {
try {
HTable table = new HTable(conf, tablename);
Scan s = new Scan();
s.setFilter(new PrefixFilter(rowPrifix.getBytes()));
ResultScanner rs = table.getScanner(s);
for (Result r : rs) {
KeyValue[] kv = r.raw();
for (int i = 0; i < kv.length; i++) {
System.out.print(new String(kv[i].getRow()) + " ");
System.out.print(new String(kv[i].getFamily()) + ":");
System.out.print(new String(kv[i].getQualifier()) + " ");
System.out.print(kv[i].getTimestamp() + " ");
System.out.println(new String(kv[i].getValue()));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
比如这个特征是前缀相同。
ROW COLUMN+CELL Jerry column=info:sex, timestamp=1318853623294, value=male
Jerry1 column=info:sex, timestamp=1318917602868, value=male Jerry2 column=info:sex, timestamp=1318917789851, value=male
可以发现这三条记录都是以Jerry开头的row key.
那么我们如何检索呢。很简单。
如果是在hbase shell中
scan ‘scores’, {FILTER => org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes(‘Jerry’))}
如果是java 客户端
public void scaneByPrefixFilter(String tablename, String rowPrifix) {
try {
HTable table = new HTable(conf, tablename);
Scan s = new Scan();
s.setFilter(new PrefixFilter(rowPrifix.getBytes()));
ResultScanner rs = table.getScanner(s);
for (Result r : rs) {
KeyValue[] kv = r.raw();
for (int i = 0; i < kv.length; i++) {
System.out.print(new String(kv[i].getRow()) + " ");
System.out.print(new String(kv[i].getFamily()) + ":");
System.out.print(new String(kv[i].getQualifier()) + " ");
System.out.print(kv[i].getTimestamp() + " ");
System.out.println(new String(kv[i].getValue()));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
相关文章推荐
- hbase通过row key 的前缀查询记录
- hbase通过row key 的前缀查询记录
- Hbase通过命令行查询信息
- sql 一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录。
- 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询参照:对数据进行增删改查)
- Hbase通过SingleColumnValueFilter进行值查询
- SQL通过时间间隔来查询记录
- mysql 通过查询条件查出指定字段记录数。
- 通过Hive查询 HBase
- 寻找热门查询:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。
- 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询參照:对数据进行增删改查)
- MYSQL查询通过date类型的字段查询一段时间记录
- 使用java HBase API查询 小bug记录
- Hbase 查询语句记录
- 寻找热门查询:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。
- oracle通过表中2个字段分组查询取数量最大的所有记录,有条件的去重
- HBase根据Rowkey批量查询数据JAVA API(一次查多条,返回多个记录)
- 在PL/SQL Developer中怎样显示通过查询表返回的所有记录?
- 怎么查询数据库中第30到40条记录呢? 通过ID,查询当前第30-40条记录 注意,ID不是顺序的
- Dynamics CRM2016 Web API之通过实体的primary key查询记录(二)