HBase根據rowKey模糊查詢
阿新 • • 發佈:2020-07-18
根據rowKey作為過濾條件查詢HBase,需要用到過濾器RowFilter
。
RowFilter屬於比較過濾器的一種,比較過濾器繼承自CompareFilter。建立一個比較過濾器需要傳入兩個引數,分別是比較運算子和比較器。
一、需求背景
車聯網專案離線資料分析,採用Spark做分析引擎,資料來源是HBase。rowKey設計為vin&collectTime,每天取前一天的增量資料作分析統計。
解決思路:根據yyyyMMdd模糊查詢獲取某一天的資料。
注:
HBase由其他部門設計,我們只負責讀,所以這裡不討論修改rowKey和表結構的情況。
vin:車輛識別號碼 collectTime:yyyyMMddHHmmss
二、程式碼實現
查詢20200701的資料
- 使用正則表示式來匹配rowKey
比較運算子:CompareOp.EQUAL
比較器:RegexStringComparator
Scan scan = new Scan();
RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator(".*20200701.*"));
scan.setFilter(rowFilter);
ResultScanner scanner = table.getScanner(scan);
- 使用子串匹配
比較運算子:CompareOp.EQUAL
比較器:SubstringComparator
Scan scan = new Scan();
RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new SubstringComparator("20200701"));
scan.setFilter(rowFilter);
ResultScanner scanner = table.getScanner(scan);