资讯动态

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

发布时间:2026/8/30 12:39:01 来源:尧图企业网站定制
十三、HBase开发 Java API 管理表第3关禁用表、启用表、删除表任务描述本关任务使用Java代码禁用表、启用表、删除表。相关知识要删除HBase中的表我们需要先禁用它否则是无法删除的如果一张已经禁用的表我们不想删除了而想重新启用它这个时候可以使用Java代码实现启用操作。接下来我们来学习如何使用Java代码实现这些操作。禁用表、删除表、启用表三个操作都很简单在获取了Admin对象之后直接使用disableTable(TableName tableName)、deleteTable(TableName tableName)、enableTable(TableName tableName)即可实现表的禁用、删除与启用操作。示例删除名为test的表启用名为demo的表Configuration config new Configuration();Connection conn ConnectionFactory.createConnection(config);Admin admin connection.getAdmin();TableName testName TableName.valueOf(Bytes.toBytes(test));TableName demoName TableName.valueOf(Bytes.toBytes(demo));admin.disableTable(testName);admin.deleteTable(testName);admin.enableTable(demoName);验证禁用、删除和启用操作之后我们会想要验证一下操作是否成功如何验证呢admin.isTableDisabled(tableName)//是否禁用admin.tableExists(tableName)//是否存在admin.isTableEnabled(tableName)//是否启用编程要求到你了请在右侧编辑器begin-end中编写代码补全函数实现函数要实现的功能具体功能请查看右侧注释。测试说明平台将会使用如下代码测试你的程序调用你编写的方法String[] tableNames { t_emp3, t_dept3, t_user3 };String[] columns { data1, data2, data3 };Task task new Task();// 创建表for (String tableName : tableNames) {task.createTable(tableName, columns);}// 删除表task.deleteTable(t_dept3);// 禁用表task.disableTable(t_user3);task.disableTable(t_emp3);// 启用表task.enableTable(t_emp3);// 显示表的状态ListTableDescriptor tableDescriptors admin.listTableDescriptors();for (TableDescriptor tableDescriptor : tableDescriptors) {TableName tableName tableDescriptor.getTableName();System.out.println(Table: tableName);System.out.println(\texists: admin.tableExists(tableName));System.out.println(\tenabled: admin.isTableEnabled(tableName));}预期输出Table: t_emp3exists: trueenabled: trueTable: t_user3exists: trueenabled: false开始你的任务吧祝你成功package step3;import java.io.IOException;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 {/*** 刪除表* param tableName 表名* throws Exception*/public void deleteTable(String tableName)throws Exception{/********* Begin *********/Configuration conf HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象Connection conn ConnectionFactory.createConnection(conf); //config为前文的配置对象Admin admin conn.getAdmin(); //使用连接对象获取Admin对象TableName testName TableName.valueOf(Bytes.toBytes(tableName));admin.disableTable(testName);admin.deleteTable(testName);/********* End *********/}/*** 创建表* param tableName 表名* param columnNames 列族的动态数组* throws Exception*/public void createTable(String tableName,String... columnNames)throws Exception{/********* Begin *********/Configuration conf HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象Connection conn ConnectionFactory.createConnection(conf); //config为前文的配置对象Admin admin conn.getAdmin(); //使用连接对象获取Admin对象// TableName tableName1 TableName.valueOf(Bytes.toBytes(tableName));//定义表名// HTableDescriptor htd new HTableDescriptor(tableName1);//定义表对象// for(String s: columnNames){// htd.addFamily(new HColumnDescriptor(Bytes.toBytes(s)));// }//构建一个Test_teacher_info表TableDescriptorBuilder test_teacher_info TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));for(String s: columnNames){ColumnFamilyDescriptor of ColumnFamilyDescriptorBuilder.of(s);test_teacher_info.setColumnFamily(of);}//构建TableDescriptor build test_teacher_info.build();admin.createTable(build);/********* End *********/}/*** 启用表* param tableName* throws Exception*/public void enableTable(String tableName) throws Exception{/********* Begin *********/Configuration conf HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象Connection conn ConnectionFactory.createConnection(conf); //config为前文的配置对象Admin admin conn.getAdmin(); //使用连接对象获取Admin对象TableName demoName TableName.valueOf(Bytes.toBytes(tableName));admin.enableTable(demoName);/********* End *********/}/*** 禁用表* param tableName*/public void disableTable(String tableName)throws Exception{/********* Begin *********/Configuration conf HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象Connection conn ConnectionFactory.createConnection(conf); //config为前文的配置对象Admin admin conn.getAdmin(); //使用连接对象获取Admin对象TableName testName TableName.valueOf(Bytes.toBytes(tableName));admin.disableTable(testName);/********* End *********/}}有任何问题都可以随时关注私信

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价