HBase偽快速分頁查詢

2021-09-22 22:12:54 字數 1201 閱讀 4885

之前有兩個功能,都是查詢歷史資料的乙個分頁查詢,系統剛上線的時候,沒有太多的資料,就一直扔在mysql裡面,後來裡面資料上億之後,就查不到了,而且資料還在以指數級增長方式上報,後來,這部分業務單獨遷移到hbase集群去存放,之前頁面的查詢也改查hbase了。但是hbase對分頁查詢這種東西支援不好,如果按照以往查詢mysql的思路,查詢出乙個總的count,再查詢出這一頁的資料,這種方式去查詢hbase,那麼如果你仔細去跟**計算時間的話,你會發現hbase去查count,無論哪種方式,都會引起全表掃瞄,是非常慢的。整個頁面載入出來,看了下響應事件,大概要45s,等的我都喝了兩杯茶了。

so,我想了個比較偽的分頁查詢方法,去掉查詢count操作,值查詢一頁資料:

public pagefindbatterhisdata(batteryhisdto dto)throws exception 

filter pagefilter=new pagefilter(dto.getpage()+dto.getpagesize());

datafilters.add(pagefilter);

filterlist datafilterlist = new filterlist(filterlist.operator.must_pass_all, datafilters);

datascan.setfilter(datafilterlist);

datascanner=table.getscanner(datascan);

datalist= rsh.handle(tablename,datascanner);

if(datalist==null || datalist.size()<1)

int startno = dto.getpage();

int endno=startno+dto.getpagesize();

datapage.settotalcount(dto.getpage()+dto.getpagesize()+1);

datapage.setresult(datalist.sublist(startno,endno));

table.close();

return datapage;

}

ps,看到很多網友通過rowkey去做分頁,具體思路是,每次記錄下起始的rowkey和結束的rowkey,然後根據rowkey搜尋,這樣也是很快的,個人認為,也ok。

hbase分頁查詢

hbase分頁t提高查詢效率。startkey怎麼取沒有問題了。但是怎麼儲存呢,有同學可能會想到存到session,但是如果你的服務是rest api型的,就沒有session的概念了。那還有兩種選擇 一 是存到客戶端,讓客戶端每次請求時把startkey再傳回來,這樣需要依賴客戶端,如果客戶端是遠...

Hbase偽分布式快速安裝 shell簡單訪問

hbase0.96快速安裝過程 簡化版 hdfs oraclehadoop1 9000 hbase hbase.cluster.distributed true hbase.zookeeper.quorum oraclehadoop1 dfs.replication 16.在 hbase home ...

hbase 分頁過濾

原文連線 所以,權威指南裡才有了加上空位元組陣列的處理。hbase2.0以後,新的api是withstartrow byte startrow,boolean inclusive 可以直接設定是否包含起始行,完美解決問題,但是又保留了對以前api函式的相容性。分頁過濾 private static ...