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

}

}

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

相关推荐
Y幽谷客1 小时前
Python加载本地大模型(Qwen3.5 8B)
python·大模型
北方的银狐-Zero1 小时前
ERP 管执行,数据管标准,OntoL本体 管思考:企业智能化升级的规划图
大数据·人工智能·本体论
四季豆331 小时前
数据质量管理的内涵与评估
大数据
伞伞悦读1 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
线上放牧人2 小时前
Windows删除图标缓存
windows·python·pyqt
Hrain-AI2 小时前
多 Agent 并行不打架:worktree 隔离与反馈回流落地(附脚本)
网络·数据库·人工智能·架构
qq_5470261792 小时前
Python 变量和简单数据类型
python
净水深流3 小时前
中央厨房冷链技术实践:多温区改造、WMS落地与IoT温控架构
大数据·数据库·人工智能·冷库冷链
l1t3 小时前
测试DuckDB 2.1的match_recognize模式匹配语句
数据库·duckdb