行键设计
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();
}