1. 程式人生 > 實用技巧 >HBase根據rowKey模糊查詢

HBase根據rowKey模糊查詢

根據rowKey作為過濾條件查詢HBase,需要用到過濾器RowFilter

RowFilter屬於比較過濾器的一種,比較過濾器繼承自CompareFilter。建立一個比較過濾器需要傳入兩個引數,分別是比較運算子比較器

一、需求背景

車聯網專案離線資料分析,採用Spark做分析引擎,資料來源是HBase。rowKey設計為vin&collectTime,每天取前一天的增量資料作分析統計。

解決思路:根據yyyyMMdd模糊查詢獲取某一天的資料。

注:

HBase由其他部門設計,我們只負責讀,所以這裡不討論修改rowKey和表結構的情況。

vin:車輛識別號碼
collectTime:yyyyMMddHHmmss

二、程式碼實現

查詢20200701的資料

  1. 使用正則表示式來匹配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);
  1. 使用子串匹配

比較運算子:CompareOp.EQUAL

比較器:SubstringComparator

Scan scan = new Scan();
RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new SubstringComparator("20200701"));
scan.setFilter(rowFilter);

ResultScanner scanner = table.getScanner(scan);