几个重要HBase API类和数据模型之间的对应关系
java类 | HBase数据模型 |
---|---|
HBaseAdmin HBaseConfiguration | 数据库 |
HTable | 表(Table) |
HTableDescriptor | 列表(CF) |
Put Get Scanner | 列表修饰符 |
1.HBaseAdmin
作用:提供了一个接口来管理HBase数据库表信息,它提供的方法包括:创建表,删除表,列出表,使表有效或无效以及添加或删除列祖或成员等
函数 | 描述 |
---|---|
addColumn | 向一个已经存在的表中添加列 |
checkHBaseAvailable | 静态函数,查看Hbase是否处于运行状态 |
createTable | 创建一个表,同步操作 |
deleteTable | 删除一个已经存在的表 |
enableTable | 使表处于有效状态 |
disableTable | 使表处于无效状态 |
listTables() | 列出所有用户控件表项 |
modifyTable | 修改表的模式,使异步的操作,可能需要花费一定的时间 |
tableExists | 检查表是否存在 |
2.HBaseConfiguration
作用:对HBase进行配置
3.HTableDescriptor
作用:包含了表的名字及其对应的表的列族
4.HColumDescriptor
作用:维护着关于列祖的信息,例如版本号,压缩设置等,通常在创建表或者为表添加列族的时候使用
代码实现
package Hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class hbasedemo {
private Configuration conf;
private Connection conn;
private Admin hbAdmin;
public void init() throws Exception{
conf=new Configuration();
conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
// conf= HBaseConfiguration.create();
conn= ConnectionFactory.createConnection(conf);
hbAdmin=conn.getAdmin();//创建表首先要创建一个Admin对象,然后让它来创建一张表
}
/**
*
* 表是否已经存在
*
*/
public void testExists() throws IOException{
System.out.println(hbAdmin.tableExists(TableName.valueOf("mytest")));
}
/**
* hbase表的创建
*/
public void creat() throws IOException{
TableName tablename= TableName.valueOf("mytest");//定义表名
if (!hbAdmin.tableExists(tablename)){
HTableDescriptor tabledesc = new HTableDescriptor(tablename);//定义表对象
HColumnDescriptor familyDesc1 =new HColumnDescriptor(Bytes.toBytes("info1"));//定义列族对象
HColumnDescriptor familyDesc2 =new HColumnDescriptor(Bytes.toBytes("info2"));
familyDesc1.setMaxVersions(3);//设置数据保存的最大保存数
tabledesc.addFamily(familyDesc1);//添加
tabledesc.addFamily(familyDesc2);
hbAdmin.createTable(tabledesc);//创建表
} else {
}
}
/**
*
* 禁用表