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...