TOP

hbase中根據Rowkey后綴進行查詢
2018-11-28 17:37:41 】 瀏覽:864
Tags:

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/yuyinghua0302/article/details/78612668

假如hbase表設計時,Rowkey設計為“time+uid”(這里不考慮hbase的Rowkey設計合理性优乐棋牌app下载优乐棋牌app下载,只是簡單說明)。現在有一個需求,篩選出某一uid在一個時間段[time1,time2)的值,該怎么辦呢?

如果是在命令行中進行查詢,可以結合startrow,endrow,filter,(column),具體如下所示:

scan ‘tablename’,
{STARTROW=>’time1+uid’,ENDROW=>’time2+uid’,FILTER=>”RowFilter(=,’regexstring:.*uid’)”}

如果是在代碼中進行查詢,

Configuration config = new Configuration();
config.set("hbase.zookeeper.quorum", "10.1.1.1");//需根據hbase配置進行設置
HBaseConfiguration hbaseConfig = new HBaseConfiguration(config);
Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes(time1+uid));
scan.setStopRow(Bytes.toBytes(time2+uid));
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStringComparator(".*"+uid));
scan.setFilter(filter);
ResultScanner rs = null;
HTable table = new HTable(hbaseConfig, Bytes.toBytes(tableName));
String rowkey = null;
rs = table.getScanner(scan);
for (Result r : rs) {
    for (KeyValue kv : r.list()) {
        rowkey = Bytes.toString(kv.getRow());
        System.out.println(rowkey);
    }   
}

請關注公眾號獲取更多資料



】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇Hbase shell 常用命令(1) 下一篇MAC上配置haddop+Hbase開發環境