更新时间:2024-08-03 GMT+08:00

HBase Java API接口介绍

接口使用建议

  • 建议使用org.apache.hadoop.hbase.Cell作为KV数据对象,而不是org.apache.hadoop.hbase.KeyValue。
  • 建议使用Connection connection = ConnectionFactory.createConnection(conf)来创建连接,废弃HTablePool。
  • 建议使用org.apache.hadoop.hbase.mapreduce,不建议使用org.apache.hadoop.hbase.mapred。
  • 建议通过构造出来的Connection对象的getAdmin()方法来获取HBase的客户端操作对象。

HBase常用接口介绍

HBase常用的Java类有以下几个:

  • 接口类Admin,HBase客户端应用的核心类,主要封装了HBase管理类操作的API,例如建表,删表等操作,部分常见接口参见表表1
  • 接口类Table,HBase读写操作类,主要封装了HBase表的读写操作的API,部分常见接口参见表表2
    表1 org.apache.hadoop.hbase.client.Admin

    方法

    描述

    boolean tableExists(final TableName tableName)

    通过该方法可以判断指定的表是否存在。如果hbase:meta表中存在该表则返回true,否则返回false。

    HTableDescriptor[] listTables(String regex)

    查看匹配指定正则表达式格式的用户表。该方法还有另外两个重载的方法,一个入参类型为Pattern;一个入参为空,默认查看所有用户表。

    HTableDescriptor[] listTables(final Pattern pattern, final boolean includeSysTables)

    作用与上一个方法类似,用户可以通过该方法指定返回的结果是否包含系统表,上一个接口只返回用户表。

    TableName[] listTableNames(String regex)

    查看匹配指定正则表达式格式的用户表。该方法还有另外两个重载的方法,一个入参类型为Pattern;一个入参为空,默认查看所有用户表。该方法的作用与listTables类似,只是该方法返回类型为TableName[]。

    TableName[] listTableNames(final Pattern pattern, final boolean includeSysTables)

    作用与上一个方法类似,用户可以通过该方法指定返回的结果是否包含系统表,上一个方法只返回用户表。

    void createTable(HTableDescriptor desc)

    创建一个只有一个region的表。

    void createTable(HTableDescriptor desc, byte[] startKey, byte[] endKey, int numRegions)

    创建一个有指定数量region的表,其中第一个region的endKey为参数中的startKey,最后一个region的StartKey为参数中的endKey。如果region的数量过多,该方法可能调用超时。

    void createTable(final HTableDescriptor desc, byte[][] splitKeys)

    创建一个表,该表的region数量以及每个region的startKey由splitKeys决定。如果region的数量过多,该方法可能调用超时。

    void createTable(final HTableDescriptor desc, final byte[][] splitKeys)

    创建一个表,该表的region数量以及每个region的startKey由splitKeys决定。该方法为异步调用,不会等待创建的表上线。

    void deleteTable(final TableName tableName)

    删除指定的表。

    public void truncateTable(final TableName tableName, final boolean preserveSplits)

    重建指定的表,如果第二个参数为true,重建后的表region与之前保持一致,否则只有一个region。

    void enableTable(final TableName tableName)

    启用指定的表。如果表的region数量过多,该方法可能调用超时。

    void enableTableAsync(final TableName tableName)

    启用指定的表。该方法为异步调用,不会等待所有region上线后才返回。

    void disableTable(final TableName tableName)

    禁用指定的表。如果表的region数量过多,该方法可能调用超时。

    void disableTableAsync(final TableName tableName)

    禁用指定的表。该方法为异步调用,不会等待所有region下线后才返回。

    boolean isTableEnabled(TableName tableName)

    判断表是否已启用。该方法可以配合enableTableAsync方法使用来判断一个启用表的操作是否完成。

    boolean isTableDisabled(TableName tableName)

    判断表是否已禁用。该方法可以配合disableTableAsync方法使用来判断一个禁用表的操作是否完成。

    void addColumn(final TableName tableName, final HColumnDescriptor column)

    添加一个列簇到指定的表。

    void deleteColumn(final TableName tableName, final HColumnDescriptor column)

    从指定的表删除指定的列簇。

    void modifyColumn(final TableName tableName, final HColumnDescriptor column)

    修改指定的列簇。

    表2 org.apache.hadoop.hbase.client.Table

    方法

    描述

    boolean exists(Get get)

    判断指定的rowkey在表中是否存在。

    boolean[] existsAll(List<Get> gets)

    判断这批指定的rowkey在表中是否存在,返回的boolean数组结果与入参位置一一对应。

    Result get(Get get)

    通过指定的rowkey读取数据。

    Result[] get(List<Get> gets)

    通过指定一批rowkey的方式批量读取数据。

    ResultScanner getScanner(Scan scan)

    获取该表的一个Scanner对象,查询相关的参数可以通过入参scan指定,包括StartRow,StopRow,caching大小等。

    void put(Put put)

    往该表写入一条数据。

    void put(List<Put> puts)

    往该表写入一批数据。

    void close()

    释放该Table对象持有的资源。

    表1表2只列举了部分常用的方法。