HBASE API

本文介绍了HBase的API使用,包括创建和删除表、插入和删除数据、全表扫描及根据RowKey查询。对比了旧版本HBase0.94和新版本1.2.6的API差异,强调了Connection对象的管理和线程安全性。并提供了创建表、列举表结构、批处理、删除操作等示例代码。
摘要由CSDN通过智能技术生成

说明:小编的旧版本HBase0.94,小编的新版本HBase1.2.6

一、常用新旧版本HBase API对照:

1. 创建HBaseAdmin 实例

旧:HBaseAdmin admin = new HBaseAdmin(conf);

新:Connection connection = ConnectionFactory.createConnection(conf);

Admin admin = connection.getAdmin();

2. HTableDescriptor

旧:HTableDescriptor desc = new HTableDescriptor(Bytes.toBytes("testtable"));

新:HTableDescriptor desc = new HTableDescriptor(TableName.valueOf("GoodsOrders"));

3. admin.deleteTable

旧:admin.deleteTable(Bytes.toBytes("testtable"));

新:admin.deleteTable(TableName.valueOf("testtable"));

4. admin.disableTable

旧:admin.disableTable(Bytes.toBytes("testtable"));

新:admin.disableTable(TableName.valueOf("testtable"));

5. admin.isTableAvailable

旧:admin.isTableAvailable(Bytes.toBytes("testtable"));

新:admin.isTableAvailable(TableName.valueOf("testtable"));

6. admin.isTableAvailable

旧:admin.isTableEnabled(Bytes.toBytes("testtable"));

新:admin.isTableEnabled(TableName.valueOf("testtable"));

7. Table取值

旧: HTable table = new HTable(conf, "testtable");

新:Connection connection = ConnectionFactory.createConnection(conf);

Table table = connection.getTable(TableName.valueOf("testtable"));

8. Result取值

旧:for (KeyValue kv : result.raw()) {Bytes.toString(kv.getRow()));}

新:for(Cell cell:result.rawCells()){new String(CellUtil.cloneRow(cell)));}

 

 

几个主要 Hbase API 类和数据模型之间的对应关系:

 

 

获取Configuration对象

获取Configuration对象

public static Configuration conf;
static{
	//使用HBaseConfiguration的单例方法实例化
	conf = HBaseConfiguration.create();
    conf.set("hbase.zookeeper.quorum", "192.168.9.102");
    conf.set("hbase.zookeeper.property.clientPort", "2181");
}

Connection代表对集群的连接对象,封装了与实际服务器的低级别单独连接以及与zookeeper的连接。

Connection可以通过ConnectionFactory类实例化。

Connection的生命周期由调用者管理,使用完毕后需要执行close()以释放资源。

Connection是线程安全的,多个Table和Admin可以共用同一个Connection对象。因此一个客户端只需要实例化一个连接即可。

反之,Table和Admin不是线程安全的!因此不建议并缓存或池化这两种对象。

连接HBase

public static Configuration configuration;
public static Connection connection

    //建立连接
    public static void init(){
        configuration  = HBaseConfiguration.create();
        configuration.set("hbase.master", "master:60000");
        configuration.set("hbase.zookeeper.quorum", "master");
        configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");
        try{
            connection = ConnectionFactory.createConnection(configuration);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 /**
     * 关闭链接
     * @param conn
     * @param admin
     */
    private void close(Connection conn ){
        if(conn!=null){
            try {
                conn.close();
            }catch (IOException e){
                e.printStackTrace();
            }

        }
    }

判断表是否存在

Admin为HBase的管理类,可以通过Connection.getAdmin()获取实例,且在使用完成后调用close()关闭。

Admin可用于创建,删除,列出,启用和禁用以及以其他方式修改表,以及执行其他管理操作。

Admin接口用于管理HBase数据库的表信息,包括创建删除表,列出表等。

 Admin可以有Connect获得,也可以有conf创建

1.Connection connection = ConnectionFactory.createConnection(conf);

HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();

2.HBaseAdmin admin = new HBaseAdmin(conf);

新版本

Admin admin = connection.getAdmin();

/**
     * 创建表是否存在
     * @param tableName 表名
     * @return 存在返回true,不存在返回false
     * @throws IOException
     */
    public static boolean ExistTable(String tableName) throws IOException {
        HBaseAdmin admin = new HBaseAdmin(conf);
        boolean exists =  admin.tableExists(TableName.valueOf(tableName));
        return exists;
    }

创建表

/**
     * 创建表
     * @param tableName 需要创建的表名字
     * @param 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值