说明:小编的旧版本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