首页 > 编程语言 >【头歌】HBase开发: Java API 管理表 答案

【头歌】HBase开发: Java API 管理表 答案

时间:2024-07-17 22:00:29浏览次数:17  
标签:Java admin tableName TableName 对象 头歌 API conf import

专栏已收集头歌大数据所有答案

第一关 JavaAPI获取表的列表:

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 *********/
    }
}

第二关 修改表:

    

package step2;
 
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.io.compress.Compression;
import org.apache.hadoop.hbase.util.*;
 
public class Task {
    
    public void updateTables()throws Exception{
        /********* Begin *********/
        Configuration conf = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
        Connection conn = ConnectionFactory.createConnection(conf); //config为前文的配置对象
        Admin admin = conn.getAdmin(); //使用连接对象获取Admin对象
        TableName tableName1 = TableName.valueOf("t_emp2");
        TableName tableName2 = TableName.valueOf("t_dept2");
                ColumnFamilyDescriptorBuilder buildFamily = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data"));//创建builder对象
                buildFamily.setBlocksize(1024*1024);//设置缓存大小
                buildFamily.setBlockCacheEnabled(false);//设置关闭缓存,默认是true
                buildFamily.setCompressionType(Compression.Algorithm.GZ);//默认是NONE
                ColumnFamilyDescriptor family = buildFamily.build();//构建Family对象
                admin.modifyColumnFamily(tableName1, family);//调用修改方法,方法接收两个参数:TableName,ColumnFamilyDescriptor
                admin.deleteColumnFamily(tableName1, Bytes.toBytes("data1"));//删除表中名为data的列族    
            
            
                ColumnFamilyDescriptorBuilder buildFamily1 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data1"));//创建builder对象
                buildFamily1.setMinVersions(2);
                buildFamily1.setMaxVersions(5);
                buildFamily1.setInMemory(true); //默认是false
                buildFamily1.setTimeToLive(60*60*24); //以秒为单位,超过这个时间设置的就会在下一次大合并中被删除
                ColumnFamilyDescriptor family1 = buildFamily1.build();//构建Family对象
                admin.modifyColumnFamily(tableName2, family1);//调用修改方法,方法接收两个参数:TableName,ColumnFamilyDescriptor
 
                admin.deleteColumnFamily(tableName2, Bytes.toBytes("data"));//删除表中名为data的列族  
        
            
 
 
 
 
 
 
 
        /********* End *********/
    }
    
}

第三关 禁用表、启用表、删除表:

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 *********/
    }
    
}

标签:Java,admin,tableName,TableName,对象,头歌,API,conf,import
From: https://blog.csdn.net/gjw3037109961/article/details/140503324

相关文章

  • 【头歌】Hadoop开发环境搭建 答案
    第二关要在第一关的基础上配置,要过就两关一起,不然浪费时间第1关:配置开发环境-JavaJDK的配置任务描述本关任务:配置JavaJDK。编程要求根据上述步骤,配置好Hadoop开发环境,点击评测即可。提示:如果出现文件解压大小限制的情况,可以使用ulimit-f1000000命令来解除......
  • Java二叉树经典例题
    目录一.相同的树二.翻转二叉树三.平衡二叉树四.对称二叉树五.根据前(后)和中序排序构建二叉树1.前序和中序构建2.后序和中序构建六.二叉树的层序遍历七.二叉树非递归遍历1.前序遍历2.中序遍历3.后序遍历八.总结前言:前面说过树是通过递归定义的。做二叉树的题,递......
  • JavaSE--分支、循环结构
    流程控制语句    流程控制语句就是在Java中用来设置Java代码如何运行及运行顺序的。    分类:    顺序结构【默认结构】    分支结构【选择结构】    循环结构【重复结构】顺序结构    顺序结构是Java程序中用来设置Java......
  • JavaSE--基础语法
    JDK、JVM、JRE的区别以及作用    JDK:Java开发工具包(包括JRE和相关工具包)    JVM:Java虚拟机(通过JVM可以实现跨平台开发)    JRE:Java运行环境(包含JVM及Java核心类库)Java语言特性    简单    面向对象    跨平台(一次编译......
  • Java生成二维码的方法,QRCode、JQuery、Zxing
    QRcode国标简单示例相关资源下载zxing实现生成 /***生成二维码**@paramwidth*@paramheight*@paramname*@paramformat*@paramcontent*/publicstaticStringgenerateQRCodeByZxing(intwidth,i......
  • Java面试 : String
    串池:StringTable,可以理解为一个对象数组["a","b","ab"]每一个元素都是一个字符串对象1.常量池与串池的关系Strings1="a";Strings2="b";Strings3="ab";上述代码的运行过程:常量池中的信息会被加载到运行时常量池中,这时abab都是常量池中的符号,还没有变成Java......
  • Java核心API——Object类
    Object简介         Object类是所有类的根类,这意味着在Java中创建的每一个类都直接或间接地继承自Object类(除了Object类本身以外,因为它没有父类)    看到这里你或许还是不明为什么要有Object类下面我就详细解释。首先这里就不得不提到Java这门语言让人熟......
  • Java——IO流
    1.IO流简介流是一个抽象的概念,它是一串连续动态的数据集合Java.io包中几乎包含了所有操作输入和输出需要的类,同时也支持很多格式,比如:基本类型,对象,本地化字符等io包中主要包括四大抽象类,分别是Writer,OutputStream,InputStream,Reader,其中Writer和OutputStream属于......
  • whisper-api语音识别语音翻译高性能兼容openai接口协议的开源项目
    whisper-api介绍使用openai的开源项目winsper语音识别开源模型封装成openaichatgpt兼容接口软件架构使用uvicorn、fastapi、openai-whisper等开源库实现高性能接口更多介绍[https://blog.csdn.net/weixin_40986713/article/details/138712293](https://blog.csdn.net......
  • 【汇总】EMQX 函数API、安装与使用说明
    前言全局说明EMQX函数说明一、说明二、Client的基本使用流程创建客户端实例使用connect*()函数之一连接到代理调用loop*()函数之一来维护与代理的网络流量使用subscribe()订阅主题并接收消息使用publish()将消息发布到代理使用disconnect()断开与代理的......