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

来源:互联网 发布:ubuntu用户组权限设置 编辑:程序博客网 时间:2024/06/06 12:58

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<HRegionInfo> lr = admin.getTableRegions(tn);        Result r = null;        if(lr == null){            log.warn("No region found for table " + tabName);        }        // 遍历表的每个region        Iterator<HRegionInfo> 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) {    }}