hbase获取region以及读取每个region的第一行

hbase获取region以及读取每个region的第一行

@(HBASE)[hbase]

1、通过HRegionInfo可以获取region的详细信息
2、Scan#setBatch(1)可以指定每次读取多少行,但必须马上Scan#close(),否则会一直读下去。

private static void checkTable(String tabName) {
    TableName tn = TableName.valueOf(tabName);
    Configuration config = HBaseConfiguration.create();
    HRegionInfo regionInfo;

    try (Connection connection = ConnectionFactory.createConnection(config);
            Admin admin = connection.getAdmin();
            Table table = connection.getTable(tn);) {
        if(!admin.tableExists(TableName.valueOf(tabName))){
            addAlarm(AlarmType.TABLE_NOT_FOUND,tabName);
            return;
        }
        List lr = admin.getTableRegions(tn);
        Result r = null;

        if(lr == null){
            log.warn("No region found for table " + tabName);
        }
        // 遍历表的每个region
        Iterator ir = lr.iterator();

        while (ir.hasNext()) {
            regionInfo = ir.next();
            ResultScanner scanner = null;
            Long startTime = System.currentTimeMillis();

            byte[] startRowkey = regionInfo.getStartKey();
            Scan sc = new Scan();
            sc.setBatch(1);
            sc.setStartRow(startRowkey);
            try {
                scanner = table.getScanner(sc);
                r = scanner.next();
                scanner.close();
            } catch (Exception e) {
    }

}

你可能感兴趣的:(1.3.5,HBASE)