如何使用其ID获取行所在的区域?

时间:2017-04-03 13:09:02

标签: java hbase

如果我有ID =" my_row_id"的行,我怎样才能使用" my_row_id"在使用Hbase的Java API时获取该行所在的区域? (我写的代码将在每个区域服务器上运行)

我找到了这样的例子:

   for (JVMClusterUtil.RegionServerThread t : util.getMiniHBaseCluster().getLiveRegionServerThreads()) {
      for (HRegionInfo r : t.getRegionServer().getOnlineRegions()) {
        if (!Arrays.equals(r.getTableDesc().getName(), "my_table"))) {
          continue;
        }

        HRegion region = t.getRegionServer().getOnlineRegion(r.getRegionName());
      }
   }

但是 util.getMiniHBaseCluster()似乎是来自一个测试工具,我怎样才能得到一个真实的"区域服务器上的 JVMClusterUtil.RegionServerThread 的实例?

1 个答案:

答案 0 :(得分:1)

您不需要在每个区域服务器上运行代码来查找行所在的位置。

HBase表有分割,它在群集中的节点之间分割数据。这是HBase master使用的元信息。它也可以在api中使用:

HTable table = new HTable(configuration, tableName);
RegionLocator regionLocator = table.getRegionLocator();
HRegionLocation location = regionLocator.getRegionLocation(myRow);

String host = location.getHostname();