Hbase 查询Scan速度优化

成果:2020.06.11 两步改完,程序扫描1000万的Hbase从4秒,变成58ms

2020.06.11
第一步:为Scan 设置Family

Scan s = new Scan();
s.setFilter(filter1);
s.addFamily(Bytes.toBytes("cookie"));

设置Family 速度从1400ms 变成772 ms 依然不够快

第二步:设置扫描范围
一旦可以设置了范围,就快速多了。意味着key要重新设计,带上可以定位的范围即可。

 String Start = "expo0";
        String End = "expoz";
        byte[] startRow = Bytes.toBytes(Start);
        byte[] endRow = Bytes.toBytes(End);
 
        Scan s = new Scan(startRow,endRow);

我的key设计这样 exposale6952020-04-01f482c1d0c8dedf133eb1a0e8b45f881f

后面f482c1d0c8dedf133eb1a0e8b45f881f 这一串 完全是乱码也可以扫描

String Start = "expo0";
String End = "expoz";

我设置扫描

String Start = "expo";
String End = "expo";

start 和 End的时候,无效。就是start和end不能相等,所以我必须设置为expo0 和 expoz 来限制后面的字符。(这种设计并不是最好的,最好的设计我还没有学会,有一种是采取时间倒序的手法。)

2020.06.11 两步改完,程序扫描1000万的Hbase从4秒,变成58ms

从源头解决问题,要修改key的结构。锁定的数据越小,效果越好。

附知识:字母顺序表
在ASCII码表的定义中48~57为0到9十个阿拉伯数字、65~90为26个大写英文字母、97~122号为26个小写英文字母。


This entry was posted in JAVA and tagged . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/hbase-scan-speed/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.
2020.03.24 评论已经全局关闭,有事加QQ聊天