HBase行键设计和Scan快速索引

来源:互联网 发布:现货黄金软件下载 编辑:程序博客网 时间:2024/06/05 08:05

行键设计

000c-e797-62fc|auth_105_401_00000050|2017-04-16
行键组成:mac地址|指标ID|日期
其中,指標ID有多個。

Scan相關代碼,毫秒級查詢相關行

HBase中目前已有30億左右數據量,下面的代碼查詢速度為600毫秒,每天新增數據量為2000萬

// 声明静态配置static Configuration conf = null;static Connection connection;static {     conf = HBaseConfiguration.create();     try {         //Connection 的创建是个重量级的工作,线程安全,是操作hbase的入口         connection = ConnectionFactory.createConnection(conf);     } catch (Exception e) {         e.printStackTrace();     }}public static void main(String[] args) throws Exception {     // 我們衹需要確定大致的開始行間和結束行間即可,加快Scan掃描速度。     // 因此,我們改變一下行鍵裏的指標ID,就可以大體確定數據的位置,實現毫秒級查詢。     scan("monitor_center:userdev_pi_day", "000c-e797-62fc|auth_0", "000c-e797-62fc|auth_9");}public static void scan(String tableName, String startKey, String endKey) throws Exception {    Table table = connection.getTable(TableName.valueOf(tableName));    Scan scan = new Scan();    // 设置行键的查找范围    scan.setStartRow(startKey.getBytes());    scan.setStopRow(endKey.getBytes());    // 过滤行键    RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator("^000c-e797-62fc.*2017-04-16$"));    scan.setFilter(rowFilter);    ResultScanner scanner = table.getScanner(scan);    for (Result r : scanner) {         System.out.println(r);    }    scanner.close();}
0 0
原创粉丝点击