
# 通过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);
       }
   }
  ```
  
 
