HBase行键设计和Scan快速索引

行键设计

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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值