HBase的管理Java API
中止服务器或客户端。
void abort(String why,Throwable e)
检查服务器或客户端是否已中止。
boolean isAborted()
返回此对象使用的连接。
Connection getConnection()
判断表述否已存在,不存在则创建表
boolean tableExists
列出所有用户空间表
#已过时。 自2.0版本以来,将在3.0版本中删除,使用listTableDescriptors()。
HTableDescriptor[] listTables()
HTableDescriptor[] listTables(String regex)
HTableDescriptor[] listTables(Pattern pattern,boolean includeSysTables)
List<TableDescriptor> listTableDescriptors()
#正则匹配查询所有的表
#已过时。 自2.0版本以来,将在3.0版本中删除。
HTableDescriptor[] listTables(Pattern pattern)throws IOException
#新版本使用
List<TableDescriptor> listTableDescriptors(Pattern pattern)throws IOException
列出用户空间表的所有名称。
TableName[] listTableNames()
TableName[] listTableNames(Pattern pattern)
TableName[] listTableNames(String regex)
TableName[] listTableNames(Pattern pattern, boolean includeSysTables)
获取表描述符。
#已过时。 自2.0版本以来,将在3.0版本中删除
HTableDescriptor getTableDescriptor(TableName tableName)
#新版本
TableDescriptor getDescriptor(TableName tableName)
创建表
void createTable(TableDescriptor desc)
void createTable(TableDescriptor desc, byte[] startKey, byte[] endKey,int numRegions)
void createTable(TableDescriptor desc, byte[][] splitKeys)
#异步创建表
Future<Void> createTableAsync(HTableDescriptor desc, byte[][] splitKeys)
删除表
void deleteTable(TableName tableName)
#异步删除
Future<Void> deleteTableAsync(TableName tableName)
#已过时。 自2.0版本以来,将在3.0版本中删除
HTableDescriptor[] deleteTables(String regex)
HTableDescriptor[] deleteTables(Pattern pattern)
截断表。 同步操作。
void truncateTable(TableName tableName,boolean preserveSplits)
#异步截断
Future<Void> truncateTableAsync(TableName tableName,boolean preserveSplits)
启用表
void enableTable(TableName tableName)
Future<Void> enableTableAsync(TableName tableName)
#已过时。 自2.0版本以来,将在3.0版本中删除
HTableDescriptor[] enableTables(String regex)
HTableDescriptor[] enableTables(Pattern pattern)
#是否启用
boolean isTableEnabled(TableName tableName)
禁用表
#已过时。 自2.0版本以来,将在3.0版本中删除
HTableDescriptor[] disableTables(String regex)
void disableTable(TableName tableName)
Future<Void> disableTableAsync(TableName tableName)
#是否禁用
boolean isTableDisabled(TableName tableName)
#是否可用
boolean isTableAvailable(TableName tableName)
将列族添加到现有表
#已过时。 自2.0版本以来,将在3.0版本中删除
default void addColumn(TableName tableName, ColumnFamilyDescriptor columnFamily)
#新版本
void addColumnFamily(TableName tableName,ColumnFamilyDescriptor columnFamily)
#异步添加
Future<Void> addColumnFamilyAsync(TableName tableName,ColumnFamilyDescriptor columnFamily)
从表中删除列
#已过时。 自2.0版本以来,将在3.0版本中删除
void deleteColumn(TableName tableName,byte[] columnFamily)
void deleteColumnFamily(TableName tableName,byte[] columnFamily)
Future<Void> deleteColumnFamilyAsync(TableName tableName,byte[] columnFamily)
修改表上的现有列
default void modifyColumn(TableName tableName, ColumnFamilyDescriptor columnFamily)
void modifyColumnFamily(TableName tableName,ColumnFamilyDescriptor columnFamily)
Future<Void> modifyColumnFamilyAsync(TableName tableName,ColumnFamilyDescriptor columnFamily)
/**
*
*
* HBase的管理API。 从Connection.getAdmin()获取实例并在完成后调用close()。
* Admin可用于创建,删除,列出,启用和禁用以及以其他方式修改表,以及执行其他管理操作。
* @author qxw
* @data 2018年8月10日上午11:08:07
*/
public class HbaseAdmin {
private static Connection connection;
private static Configuration configuration;
static {
// 取得一个数据库连接的配置参数对象
configuration = HBaseConfiguration.create();
// 设置连接参数:HBase数据库使用的端口
configuration.set("hbase.zookeeper.property.clientPort", "2181");
// 设置连接参数:HBase数据库所在的主机IP
configuration.set("hbase.zookeeper.quorum", "192.168.10.124");
}
/**
* 双重锁检查单例模式
* @return
* @throws IOException
*/
public static Connection getConnection() throws IOException{
//先检查实例是否存在,如果不存在才进入下面的同步块
if(connection==null){
synchronized (HbaseAdmin.class){
//再次判断实例是否存在,不存在 则创建
if(connection==null){
// 取得一个数据库连接对象
connection = ConnectionFactory.createConnection(configuration);
}
}
}
return connection;
}
/**
* 创建表
* @param tableName
* @param fields 列族
* @return
*/
public static JSONObject createTable(String tableName,List<String> fields){
JSONObject json=new JSONObject();
Admin db=null;
try {
db=getConnection().getAdmin();
//通过HTableDescriptor创建一个HTableDescriptor将表的描述传到createTable参数中
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));
//为描述器添加表