本文主要是介绍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();
}
这篇关于HBase行键设计和Scan快速索引的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!