通过ThriftServer实例操作HBase表
功能简介
传入ThriftServer实例所在host和提供服务的port,根据认证凭据及配置文件新建Thrift客户端,访问ThriftServer,进行根据指定namespace获取tablename以及创建表、删除表的操作。
代码样例
- 方法调用
// Get table of specified namespace. getTableNamesByNamespace(client, "default"); // Create table. createTable(client, TABLE_NAME); // Delete specified table. deleteTable(client, TABLE_NAME);
- 根据指定namespace获取tablename
以下代码片段在“hbase-thrift-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“ThriftSample”类的getTableNamesByNamespace方法中。
private void getTableNamesByNamespace(THBaseService.Iface client, String namespace) throws TException { client.getTableNamesByNamespace(namespace) .forEach( tTableName -> LOGGER.info("{}", TableName.valueOf(tTableName.getNs(), tTableName.getQualifier()))); }
- 创建表
以下代码片段在“hbase-thrift-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“ThriftSample”类的createTable方法中。
private void createTable(THBaseService.Iface client, String tableName) throws TException, IOException { TTableName table = getTableName(tableName); TTableDescriptor descriptor = new TTableDescriptor(table); descriptor.setColumns( Collections.singletonList(new TColumnFamilyDescriptor().setName(COLUMN_FAMILY.getBytes()))); if (client.tableExists(table)) { LOGGER.warn("Table {} is exists, delete it.", tableName); client.disableTable(table); client.deleteTable(table); } client.createTable(descriptor, null); if (client.tableExists(table)) { LOGGER.info("Created {}.", tableName); } else { LOGGER.error("Create {} failed.", tableName); } }
- 删除表
以下代码片段在“hbase-thrift-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“ThriftSample”类的deleteTable方法中。
private void deleteTable(THBaseService.Iface client, String tableName) throws TException, IOException { TTableName table = getTableName(tableName); if (client.tableExists(table)) { client.disableTable(table); client.deleteTable(table); LOGGER.info("Deleted {}.", tableName); } else { LOGGER.warn("{} not exist.", tableName); } }