头歌实践教学平台:大数据存储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_9669496518 分钟前
9:25-9:30 如何获取 A 股开盘基准价?QuantDash Python SDK 实战初始化量化策略状态
开发语言·人工智能·python·量化·quantdash·量化数据源
TDengine (老段)19 分钟前
TDengine 应用案例 — IT 运维与可观测性
大数据·运维·数据库·制造·时序数据库·tdengine·涛思数据
疯狂打码的少年20 分钟前
【数据库技术】关系代数连接运算(等值连接/自然连接/外连接)
jvm·数据库·笔记·oracle
卷无止境21 分钟前
从一杯咖啡的订单说起,数据库设计到底是怎么长出来的
后端·python
2601_9620662322 分钟前
golang超详细基础入门教程_golang教程
前端·python·golang
小王C语言26 分钟前
MySQL 视图:视图是什么,视图和基表之间的关系
数据库·mysql
逗脑IDE27 分钟前
零基础学ESP32:蜂鸣器——让ESP32会“唱歌”!
python·物联网·esp32·智能家居
程序员-Benothing28 分钟前
什么是 MySQL 的主从同步机制?它是如何实现的?
android·数据库·mysql
TomEval30 分钟前
【Web UI 自动化】08 - 企业选型·报告·CI/CD
python·功能测试