HBase條件查詢(多條件查詢)

2021-09-02 18:18:38 字數 1489 閱讀 7238

hbase的查詢實現只提供兩種方式:

1、按指定rowkey獲取唯一一條記錄,get方法(org.apache.hadoop.hbase.client.get

2、按指定的條件獲取一批記錄,scan方法(org.apache.hadoop.hbase.client.scan

實現條件查詢功能使用的就是scan方式,scan在使用時有以下幾點值得注意:

1、scan可以通過setcaching與setbatch方法提高速度(以空間換時間);

2、scan可以通過setstartrow與setendrow來限定範圍。範圍越小,效能越高。

通過巧妙的rowkey設計使我們批量獲取記錄集合中的元素挨在一起(應該在同乙個region下),可以在遍歷結果時獲得很好的效能。

3、scan可以通過setfilter方法新增過濾器,這也是分頁、多條件查詢的基礎。

下面舉個形象的例子:

我們在表中儲存的是檔案資訊,每個檔案有5個屬性:檔案id(long,全域性唯一)、建立時間(long)、檔名(string)、分類名(string)、所有者(user)。

我們可以輸入的查詢條件:檔案建立時間區間(比如從20120901到20120914期間建立的檔案),檔名(「中國好聲音」),分類(「綜藝」),所有者(「浙江衛視」)。

假設當前我們一共有如下檔案:

內容列表

idcreatetime

name

category

userid

120120902

中國好聲音第1期綜藝1

220120904

中國好聲音第2期綜藝1

320120906

中國好聲音外卡賽綜藝1

420120908

中國好聲音第3期綜藝1

520120910

中國好聲音第4期綜藝1

620120912

中國好聲音選手採訪

綜藝花絮27

20120914

中國好聲音第5期綜藝1

820120916

中國好聲音錄製花絮

綜藝花絮29

20120918

張瑋獨家專訪花絮3

1020120920

加多寶涼茶廣告

綜藝廣告4

這裡userid應該對應另一張user表,暫不列出。我們只需知道userid的含義:

1代表 浙江衛視; 2代表 好聲音劇組; 3代表 xx微博; 4代表 贊助商。

呼叫查詢介面的時候將上述5個條件同時輸入find(20120901,20121001,"中國好聲音","綜藝","浙江衛視")。

此時我們應該得到記錄應該有第1、2、3、4、5、7條。第6條由於不屬於「浙江衛視」應該不被選中。

我們在設計rowkey時可以這樣做:採用userid + createtime + fileid組成rowkey,這樣既能滿足多條件查詢,又能有很快的查詢速度

HBase條件查詢(多條件查詢)

author pirate leo myblog myemail codeevoship gmail.com 文中可能涉及到的api hadoop hdfs hbase begin!hbase的查詢實現只提供兩種方式 1 按指定rowkey獲取唯一一條記錄,get方法 org.apache.hado...

HBase條件查詢(多條件查詢)

author pirate leo myblog myemail codeevoship gmail.com 文中可能涉及到的api hadoop hdfs hbase begin!hbase的查詢實現只提供兩種方式 1 按指定rowkey獲取唯一一條記錄,get方法 org.apache.hado...

HBase條件查詢(多條件查詢)

author pirate leo myblog myemail codeevoship gmail.com 文中可能涉及到的api hadoop hdfs hbase begin!hbase的查詢實現只提供兩種方式 1 按指定rowkey獲取唯一一條記錄,get方法 org.apache.hado...