HBase之Java API 操作

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));
	        //为描述器添加表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值