hbase的查询scan功能注意点(setStartRow, setStopRow)

来自http://hi.baidu.com/7636553/blog/item/982beb17713bc004972b43ee.html

hbase的scan查询功能注意项:

Scan scan = new Scan();

scan.setStartRow(“5193:”);

scan.setStopRow(“5194:”);

ResultScanner result = table.getScanner(scan);

for (Result r : result) {

get it......

}

查找

原本期望:

从下列中

5193:1

5193:2

5194:1

51939:1

51942:1

取出5193:---5194:中的元素(5193开头的元素),也就是(程序所使用的查询方式)

5193:1

5193:2

但是,其实很容易被误取了,实际查询得到的结果如下:

5193:1

5193:2

51942:1

原因是:与hbase内的scan的方式有关,hbase会将自己的元素按照key的ASCII码排序,

其实也就是说,我们会看见排列的方式如下:

51939:1

5193:1

5193:2

51942:1

5194:1

如果hbase使用这种查询方式,是实际工作中,因为id都比较长,其实发生的概率比较小,是一种偶现问题。

取出5193:开头的元素相对比较取巧的写法:

scan.setStartRow("5193:#");

scan.setStopRow("5193::");

ResultScanner result = table.getScanner(scan);

for (Result r : result) {

get it......

}

原因:ASCII排序中:"#" < "0-9" < ":"

取出来的将是5193:后面跟着数字的元素

(转)http://blog.sina.com.cn/s/blog_6a67b5c50100zbrx.html

时间: 2024-10-20 21:42:51

hbase的查询scan功能注意点(setStartRow, setStopRow)的相关文章

03微信公众平台 - 实现【天气查询】功能函数,返回一个文本字符串。

一.功能代码函数实现 private function _weather($city) { include("weather_cityId.php"); $c_name=$weather_cityId[$city]; if(!empty($c_name)){ $json=file_get_contents("http://m.weather.com.cn/data/".$c_name.".html"); $data = json_decode($

DataUml Design 介绍9 - DataUML 1.3版本功能(查询分析器功能等)

DataUML 1.3 (下载)主要更新内容如下: 1.增加查询分析器功能: 2.增加打开历史文件记录功能: 3.修改查询对象功能: 4.增加显示对象长度功能: 5.增加配置显示表字段功能: 6.增加快速定位对象功能: 一.查询分析器功能 支持多种数据库的查询,能够执行SQL语句进行查询数据和操作数据.如下图: 1.点击"打开"可以打开一个SQL文件: 2.点击"新建查询"按钮新建一个查询分析器,可以选择数据源进行查询数据: 3.点击"执行"可以

基于“MVC”框架集设计模式,利用 DBHelper实现查询数据库功能

利用 DBHelper实现查询数据库功能 (1)连接好mysql数据库,如果无法连接,先打开mysql服务.新建一个数据库,名字为text,在新建一个数据表,名字为user,添加三个字段:用户ID.用户名和密码. (2)新建 web 项目UserManager,根据MVC模型的设计,建立四个包:beans.DAO.DBHelper.servlet.将所需要的DBHelper导入新建Web项目的DBHelper中,注意要使数据库名字保持一致.将mysql-connector-java-5.1.24

MySQL中间件之ProxySQL(9):ProxySQL的查询缓存功能

返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html ProxySQL支持查询缓存的功能,可以将后端返回的结果集缓存在自己的内存中,在某查询的缓存条目被清理(例如过期)之前,前端再发起同样的查询语句,将直接从缓存中取数据并返回给前端.如此一来,ProxySQL处理的性能会大幅提升,也会大幅减轻后端MySQL Server的压力. 1.开启query cache功能 ProxySQL的查询缓存功能由mysql_query_

poscms基于list标签实现的查询分页功能

poscms系统本身有一个在查询页(search页面)实现的查询分页功能,基于系统封装的php函数dr_search_url() 但是今天的需求除了导航栏.列表页.详情页都实现查询功能外,关键是有两个不同的模块,模块不同,如果用 系统的search的话,那就得弄两个search页面出来,其实搜索结果页面完全就是照搬列表页,所以,我为什么不 直接用列表页作为模板呢,不去走系统的search控制器.下面上列表页: 1.筛选条件的获取以及查询页的路径拼接 <div class="paixu&qu

【新功能】MaxCompoute禁止Full Scan功能开放

摘要: 2018年1月10日,MaxCompute禁止Full Scan功能开放.对于新创建的project默认情况下执行sql时,针对该project里的分区表不允许全表扫描,必须有分区条件指定需要扫描的分区. 点此查看原文:http://click.aliyun.com/m/41850/ [发布功能]: 2018年1月10日,MaxCompute禁止Full scan功能开放. 对于新project(注意:是新project,老用户创建的新project也适用该功能),默认情况下执行sql时

hbase查询,scan详解

一.shell 查询 hbase 查询相当简单,提供了get和scan两种方式,也不存在多表联合查询的问题.复杂查询需通过hive创建相应外部表,用sql语句自动生成mapreduce进行.但是这种简单,有时为了达到目的,也不是那么顺手.至少和sql查询方式相差较大. hbase 提供了很多过滤器,可对行键,列,值进行过滤.过滤方式可以是子串,二进制,前缀,正则比较等.条件可以是AND,OR等 组合.所以通过过滤,还是能满足需求,找到正确的结果的. 1.1 过滤器类型 HBase 最新官方文档中

hbase分页查询实现

Hbase本身是没有分页查询的,我在网上找了很多资料来实现一个分页功能,在这里做了一下记录,分享给大家,有什么不足之处,请尽管指出.废话不多说,看代码. import java.io.IOException; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUt

hbase模糊查询key删除指定创建时间的数据

1.转换创建时间 shell脚本 current="2018-10-28 19:00:00" timeStamp=`date -d "$current" +%s` currentTimeStamp=$((timeStamp*1000+`date "+%N"`/1000000)) echo $currentTimeStamp 2.将查询出的数据导入txt echo "scan 'table_name',{FILTER=>org.ap