如何通过shell列出HBase表中的区域?

如何通过shell列出HBase表中的区域?,hbase,Hbase,我希望通过hbase shell获得有关web UI中出现的表的区域的相同信息(即区域名称、区域服务器、开始/结束键、位置) (UI不稳定/速度慢,而且我希望将此信息作为脚本的一部分进行处理。) 在谷歌搜索了很多次之后,我不知道怎么做,这让我非常惊讶。版本为1.0.0.-cdh5.4.0要获取关于该表的区域信息,您需要扫描hbase:meta表 scan 'hbase:meta',{FILTER=>"PrefixFilter('table_name')"} 此命令将提供所有区域的详细信息

我希望通过hbase shell获得有关web UI中出现的表的区域的相同信息(即区域名称、区域服务器、开始/结束键、位置)

(UI不稳定/速度慢,而且我希望将此信息作为脚本的一部分进行处理。)


在谷歌搜索了很多次之后,我不知道怎么做,这让我非常惊讶。版本为1.0.0.-cdh5.4.0

要获取关于该表的区域信息,您需要扫描
hbase:meta

scan 'hbase:meta',{FILTER=>"PrefixFilter('table_name')"}
此命令将提供所有区域的详细信息。行键将具有区域名称,并且将有四个列限定符。您可能需要以下两个列限定符:

info:regioninfo
-此限定符包含开始键和结束键


info:server
-此限定符包含区域服务器详细信息

以下是来自HBase邮件列表的响应:

状态“详细”将向您显示足够的信息 e、 g

但是,这将返回所有表中的信息,您需要解析您感兴趣的表区域。

使用“官方”
list\u regions
shell命令列出所有区域。请注意,此工具仅在HBase版本1.4及以上版本中可用

Some examples are 
        Examples:
        hbase> list_regions 'table_name'
        hbase> list_regions 'table_name', 'server_name'
        hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}
        hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}, ['SERVER_NAME']
        hbase> list_regions 'table_name', {}, ['SERVER_NAME', 'start_key']
        hbase> list_regions 'table_name', '', ['SERVER_NAME', 'start_key']

有关其实现的详细信息,请访问:

hbase中有一个用于表恢复和一致性检查的工具,称为hbase hbck。虽然这不会在hbase外壳内运行,但可以用于获取区域列表

命令
hbase hbck-details
可用于获取表格详细信息,并将包含所需的区域信息


可以解析上述命令的输出,以获得所需表的区域信息。

结果表明,您还不能(现在)。有一个开放的票证可以添加它。仅供参考,我希望这样做的主要原因之一是UI不会总是显示表区域。我很幸运地发现,如果您在表上执行了一个主要的压缩,这会以某种方式刷新表元数据,从而使UI显示表区域。所以至少我现在可以得到信息了。但如果能够以一种不使用屏幕抓取的简单方式在脚本中使用这些信息,那还是非常好的!现在有了一个官方命令,请从1.4版开始查看
scan 'hbase:meta', {FILTER=>"PrefixFilter('tableName')", COLUMNS=>['info:regioninfo']}
scan 'hbase:meta', {FILTER=>"PrefixFilter('tableName')", COLUMNS=>['info:regioninfo']}