头歌实践教学平台:大数据存储2023(十三1)

十三、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 *********/

}

}

有任何问题都可以随时关注私信!

相关推荐
飞浪纪元[FWC–FE]13 分钟前
Qt 工程创建与 CMake / qmake 构建规范
开发语言·数据库·qt
Ivanqhz17 分钟前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
Mr. zhihao20 分钟前
Deep Agent 架构深度解析:主Agent与子Agent完整交互机制与核心参数作用
python·ai·langgraph·deepagent
Tsuki_tl23 分钟前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型
Gauss松鼠会23 分钟前
GaussDB 整体架构解析
运维·服务器·网络·数据库·sql·架构·gaussdb
狗凯之家源码网27 分钟前
iOS C2 V2 与 Python FastAPI 全链路远控系统深度评测
python·ios·fastapi
系统集成-鹰翔28 分钟前
ERP对接升级提示数据库迁移失败:SQLite逐版本事务到底回滚到哪一步
javascript·数据库·经验分享·后端
西瓜拿铁好喝29 分钟前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
代码派39 分钟前
业务不停机迁移 MySQL 到 TiDB,NineData 数据增量同步实操演示
数据库·mysql·tidb·ninedata·无停机迁移·增量迁移·全量迁移
IT研究室41 分钟前
最新大数据毕业设计选题推荐-基于大数据的AI助手系统性软件缺陷评论挖掘与可视化-大数据-Spark-Hadoop-Bigdata
大数据·人工智能·课程设计