在HBase中有一种方法可以让我获得一个区域的中间键吗?

时间:2017-04-04 17:31:38

标签: hbase

看起来我可以像这样得到中键:

        RegionServerServices rss = null;
        final List<Region> onlineRegions = rss.getOnlineRegions(tableName);

        for (Region region : onlineRegions) {
            final List<Store> stores = region.getStores();
            for (Store store : stores) {
                final long storeSize = store.getSize();
                final byte[] splitPoint = store.getSplitPoint();

            }
        }
    }
}

但是,我无法在客户端获得HRegionRegionRegionServerService

1 个答案:

答案 0 :(得分:0)

免责声明:我不确定这种方法有多安全,因为它可能会对hfile进行读锁定。我打算尝试在快照上使用它,这样我就可以了。

您也可以:

  • 获取特定列系列的商店中点和
  • 获得最大商店的中点,当您的地区有多家商店时,可能会给您更好的近似值

原谅格式......

    try (Connection connection = 
                ConnectionFactory.createConnection(hbaseConfig);
                Admin admin = connection.getAdmin();) {
    final List<HRegionInfo> regionInfoList = admin.getTableRegions(tableName);
    HRegionInfo regionInfo = regionInfoList.get(0);
    final HRegion region = HRegion.openHRegion(hbaseConfig,

    FileSystem.get(hbaseConfig),
                                                   new Path("/hbase"),
                                                   regionInfo,
                                                   table.getTableDescriptor(),
                                                   null,
                                                   null,
                                                   null);
     List<Store> stores = region.getStores();
     stores.get(0).getSplitPoint();
    }