十三、HBase开发: Java API 管理表
第1关:JavaAPI获取表的列表
任务描述
本关任务:列出HBase中所有表的名字,输出表是否存在,表是否可用。
相关知识
本关我们来使用JavaApi对HBase中的表进行管理,第一关我们来学习如何列出所有的表。
获取表的列表
如何使用Java列出HBase中所有的表呢?
在HBase中我们要获取一张表的基本信息需要用到一个类:TableDescriptor;
通过TableDescriptor我们可以获取表的名字,列族等信息;
tableDescriptor.getTableName() //可以获取表名
tableDescriptor.getColumnFamilies()//获取所有的列族
好了,问题来了,怎样获取TableDescriptor对象呢?很简单:
List<TableDescriptor> tableDescriptors = admin.listTableDescriptors();
通过Admin对象的listTableDescriptors()方法就可以获取到HBase中所有TableDescriptor对象的集合了。
最后我们可以通过Admin对象知道表是否存在,以及是否可用:
admin.tableExists(tableName) //存在返回true
admin.isTableEnabled(tableName) //可用返回true
编程要求
在右侧编辑器begin-end中编写Java代码,实现列出HBase中所有表的表名、表是否存在,表是否可用的功能。
测试说明
可以不用手动启动HBase,平台测试脚本会自动启动,编写好程序点击测评即可,当然如果想手动启动(只需要启动HBase,不需要启动Hadoop),也是没有问题的。
预期输出:分隔符是\t,冒号是中文冒号,不要有空格;
Table: t_class
exists: true
enabled: true
Table: t_course
exists: true
enabled: true
Table: t_dept
exists: true
enabled: true
Table: t_emp
exists: true
enabled: true
Table: t_stu
exists: true
enabled: true
开始你的任务吧,祝你成功!

package step1;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.*;
public class Task {
public void showTableList() throws Exception {
/********* Begin *********/
Configuration conf = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象
List<TableDescriptor> tableDescriptors = admin.listTableDescriptors();
for(TableDescriptor tableDescriptor: tableDescriptors){
System.out.println("Table:" + tableDescriptor.getTableName());
System.out.println("\texists:" + admin.tableExists(tableDescriptor.getTableName()));
System.out.println("\tenabled:" + admin.isTableEnabled(tableDescriptor.getTableName()));
}
/********* End *********/
}
}
有任何问题都可以随时关注私信!