【大數據-HBase】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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM