HBase数据库的元数据提取

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leishenop/article/details/72683338

在HBase数据库中,我总结的元数据总共包括两种数据,一是所有的表,二是表的元数据和表里面的部分样本数据。下面就是我进行元数据获取的步骤。

1 连接到HBase

我们要从zookeeper中去获取HBase里面的数据库相关数据,下面是连接的代码:
首先在Maven的pom.xml引入下面的依赖,记住引入的依赖的版本一定要大于等于你们集群使用的版本,之前就是引入低于集群版本的jar包,导致连不上。

     <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>1.2.5</version>
        </dependency>

然后就是下面代码

        Configuration config = HBaseConfiguration.create();
        config.set("hbase.zookeeper.quorum", "这里设置你们集群的地址");
        //config.set("hbase.master", "10.141.68.47:60000");
        config.set("hbase.zookeeper.property.clientPort", "2181");
        config.set("hbase.master.port", "60000");
        config.set("hbase.master.info.bindAddress", "hmaster绑定地址");
        config.set("hbase.master.info.port", "60010");
        config.set("zookeeper.znode.parent", "/hbase-unsecure");
        Connection con = ConnectionFactory.createConnection(config);
        Admin admin = con.getAdmin();

然后你就可以使用Admin的API来进行操作了,具体的话,你可以看看它的API函数。

列出所有的表

在Hbase中,有个类叫Admin类,可以通过其方法来获取所有表的名称

TableName[] listTableNames() throws IOException;

获取表的HTableDescriptor

//Admin类的方法
admin.getTableDescriptor(table);

HTableDescriptor 的相关元数据方法

getMaxFileSize()  最大的region size
getMinFileSize()  最小的region size
getMemStoreFlushSize memstore size
getFamilies() 所有的列族
getRegionReplication regition 副本数
getPriority 优先权
getColumnFamilyCount 列族个数
getCoprocessors 得到协处理器
getOwnerString 物主信息
getFlushPolicyClassName()
getRegionSplitPolicyClassName()

过滤掉部分行数据

这里显示的样本数据是一个数据表的一个子集,因为HBase是列式数据库,这里比如我们显示一个表的部分行,部分列的数据,这里用到了HBase中的过滤器来进行相应的数据的过滤Filter.这里准备先使用PageFileter来进行行的分页处理,或者RandomRowFileter,性能有待于测试。我们可以把页数设置大一点,然后进行数据的获取,比如这里我们想显示十行的数据,我们就开始对页设置大一点。上面这两个是用来过滤掉一些行的数据。

过滤部分列数据

这里我们使用的是列计数过滤器ColumnPaginationFilter这里我们指定的列为10.

过滤器组合

因为我最终显示的数据是部分行,部分列,那么怎么把这两个过滤器组合起来呢。这里使用的是FilterList,FilterList的operator有两种,MUST_PASS_ALL和MUST_PASS_ONE。前者是要满足所有的过滤器,后面是只要满足一个过滤器就可以了。这里我使用的MUST_PASS_ALL.

列数据的获取

结合上面两种过滤器的类型,和FilterList一起使用,我们得到了部分行的部分列

总结

上面这些是我的大体思路,那么具体的操作就看你怎么去使用这些API了。

猜你喜欢

转载自blog.csdn.net/leishenop/article/details/72683338