HBase key设置加快查询速度小谈
来源:互联网 发布:战舰世界mac 国服切换 编辑:程序博客网 时间:2024/05/17 04:11
最近做一个基于HBase 的大日志存储,分析系统。 在key的设置上有一些心得,拿出来大家共享。
我们这个日志系统有个需求,就是根据某个操作找出整个会话的所有操作,按一般的做法就是根据SID(会话Id)字段来扫描全表,返回所有该会话SID的记录。代码如下:
Scan scan = new Scan();
FilterList filterList = new FilterList();
filterList.addFilter(new SingleColumnValueFilter(Bytes.toBytes("CF"),
Bytes.toBytes("SID"), op, Bytes.toBytes("10000000")));
scan.setFilter(filterList);
ResultScanner rs = currentTable.getScanner(scan);
由于hbase 是key ,value存储系统,因此对基于V的条件查询都是全表扫描,对于小数据量没问题,但是一旦数据量大到百万,千万级(我们这里是一天就千万级)那就会无法接受,会非常非常非常慢。。 但是我们知道Key是是顺序排列的,基于key的访问就会非常快。因此我们在设计Key的时候加点小小技巧就可以让你轻松快速查找到相同SID的操作。
具体:KEY = DATETIME +SID+SEQ (SEQ为同一SID的不同操作的顺序编号)。 这样我们查找SID=100000的所有操作的代码如下:
Scan scan = new Scan();
String startkey = DATETIME + "100000"
String endkey = DATETIME +"100000"+"99999" (我们假设每个session最多有100000个操作,当然实际上远远小于这个数值。)
scan.setStartRow(Bytes.toBytes(startKey));
scan.setStopRow(Bytes.toBytes(endKey));
ResultScanner rs = currentTable.getScanner(scan);
经过上面一改,不论你的hbase记录多大,上述查询时间都在毫秒级了。。。
- HBase key设置加快查询速度小谈
- oracle加快查询速度
- 如何加快sql查询速度
- 如何加快数据库查询速度
- 优化Hbase查询速度
- SQL数据库如何加快查询速度?
- 加快数据库查询速度方法--建立索引
- 加快大表关联查询速度
- 如何加快sql的查询速度
- SQL 强制指定索引加快查询速度
- 优化SQLServer数据库加快查询速度
- SQL 强制指定索引加快查询速度
- CATIA启动速度加快小技巧
- 加快电脑速度的小方法
- 精心设置卡巴斯基 加快杀毒速度
- 查询MYSQL和查询HBASE速度比较
- 查询MYSQL和查询HBASE速度比较
- ORACEL 大数据表 加快查询速度方案 总结
- 【卡特兰数】【数论】
- Reverse Nodes in k-Group leetcode
- UVA10905
- HBase性能优化方法总结
- 【面试准备】堆排
- HBase key设置加快查询速度小谈
- poj 1861 Network
- 优化hbase的查询操作-大幅提升读写速率
- mysql数据库连接池配置
- 1080 - Binary Simulation[树状数组]
- Binder框架及运用详解
- Tdifw 移植到win7
- BootStrap -- Grid System
- 时代双雄:云计算与大数据