头歌实践教学平台:大数据存储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 *********/

}

}

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

相关推荐
2601_967212726 分钟前
电源轨道系统技术实力评估维度与选型技术框架
大数据·经验分享
数智顾问10 分钟前
(171页PPT)XX集团信息安全管理体系优化咨询项目信息安全建设规划报告(附下载方式)
大数据
狗凯之家源码网11 分钟前
AI 步数修改提交系统源码应用场景与落地指南
android·数据库·人工智能·运动步数
Είναι η κοπέλα12 分钟前
模型量化完全指南:GGUF、GPTQ、AWQ 怎么选
人工智能·pytorch·python
yi01115 分钟前
LeetCode 15:三数之和|排序 + 双指针,如何避免重复答案?
笔记·python·算法·leetcode·双指针
weixin1997010801624 分钟前
《1688消息服务落地方案:alibaba.message.* 与 Webhook 回调的可靠性与重试策略》(附Python源码)
开发语言·python
北风toto25 分钟前
数据库笔记:Armstrong 公理系统与集合论的深度辨析
数据库·笔记
小蒜学长34 分钟前
基于SpringBoot+Vue的租房管理系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·租房管理
一只专注api接口开发的技术猿35 分钟前
Open‑Claw 实战|告别页面逆向,快速搭建电商商品监控与数据分析完整方案
大数据·数据库·python·数据挖掘·数据分析