文章目录

  • 创建命名空间
  • 创建表格是否存在
  • 创建表
  • 修改表格中一个列族的版本
  • 删除表格
  • DDL主程序

创建 HBaseDDL 类,添加静态方法即可作为工具类

public class HBaseDDL {// 添加静态属性 connection 指向单例连接public static Connection connection = HBaseConnect.connection;
}

创建命名空间

    /*** 创建命名空间** @param namespace 命名空间名称*/public static void createNamespace(String namespace) throws IOException {//1.获取admin// 此处的异常先不要抛出,等待方法写完,再统一进行处理//admin的连接是轻量级的,不是线程安全的,不推荐池化,或者缓存这个连接Admin admin = connection.getAdmin();//2.调用方法创建命名空间//代码相对shell更加底层,所以shell能实现的功能,代码一定能实现,所以需要填写完整的命名空间描述//2.1 创建命名空间描述建造者 => 设计师NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(namespace);//2.2 给命名空间添加需求builder.addConfiguration("user", "root");//2.3 使用builder构造出对应的添加完参数的对象,完成创建// 创建命名空间出现的问题,都属于本方法的问题 ,不应该抛出try {admin.createNamespace(builder.build());} catch (IOException e) {System.out.println("该命令已经存在");e.printStackTrace();}//3.关闭adminadmin.close();}

创建表格是否存在

/*** 判断表是否存在** @param namespace 命名空间名称* @param tableName 表格名称* @return true表示存在*/public static boolean isTableExists(String namespace, String tableName) throws IOException {//1.获取adminAdmin admin = connection.getAdmin();//2.使用方法判断表格是否存在boolean b = false;try {b = admin.tableExists(TableName.valueOf(namespace, tableName));} catch (IOException e) {e.printStackTrace();}//关闭连接admin.close();//3.返回结果return b;// 后面的代码不能生效}

创建表

/*** 创建表格** @param namespace      命名空间名称* @param tableName      表格名称* @param columnFamilies 列祖名称 , 可以有多个*/public static void createTable(String namespace, String tableName, String... columnFamilies) throws IOException {//判断的是否有一个列族if (columnFamilies.length == 0) {System.out.println("创建表格至少有一个列族");return;}//判断表格是否存在if (isTableExists(namespace, tableName)) {System.out.println("表格已经存在");return;}//1.获取adminAdmin admin = connection.getAdmin();//2.调用方法创建表格//2.1 创建表格描述的建造者TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf(namespace, tableName));//2.2 添加参数for (String columnFamily : columnFamilies) {//2.3创建列族描述的建造者ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(columnFamily));//2.4对应的列族添加参数// 添加参数版本columnFamilyDescriptorBuilder.setMaxVersions(5);//2.5 创建添加完参数的列族描述tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptorBuilder.build());}//2.6 创建对应表格描述try {admin.createTable(tableDescriptorBuilder.build());} catch (IOException e) {System.out.println("表格已存在");e.printStackTrace();}//3. 关闭adminadmin.close();}

修改表格中一个列族的版本

    /*** 修改表格中的一个列祖的版本** @param namespace    命名空间* @param tableName    表格名称* @param columnFamily 列族名称* @param version      版本*/public static void modifyTable(String namespace, String tableName, String columnFamily, int version) throws IOException {//判断表格是否存在if (!isTableExists(namespace,tableName)){System.out.println("表格已存在,无法修改");return;}// 1.获取adminAdmin admin = connection.getAdmin();try {// 2.调用方法修改表格// 2.0 获取之间的表格描述TableDescriptor descriptor = admin.getDescriptor(TableName.valueOf(namespace, tableName));// 2.1 创建一个表格描述建造者// TODO 如果使用填写tableName 方法,相当于创建一个新的表格描述建造者,没有之前信息// 如果要修改之前的信息, 必须调用方法填写一个就的表格描述TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(descriptor);// 2.2 对应建造者进行表格数据的修改ColumnFamilyDescriptor columnFamily1 = descriptor.getColumnFamily(Bytes.toBytes(columnFamily));// 创建列族描述建造者// 需要填写旧的列族描述ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(columnFamily1);// 修改对应的版本columnFamilyDescriptorBuilder.setMaxVersions(version);// 此处修改的时候,如果填写新的创建,那么别的参数会初始化tableDescriptorBuilder.modifyColumnFamily(columnFamilyDescriptorBuilder.build());admin.modifyTable(tableDescriptorBuilder.build());} catch (IOException e) {e.printStackTrace();}// 3.关闭adminadmin.close();}

删除表格

/*** 删除表格** @param namespace 命名空间名称* @param tableName 表格名称* @return true 表示删除成功*/public static boolean deleteTable(String namespace, String tableName) throws IOException {// 1.判断表格是否存在if (!isTableExists(namespace, tableName)) {System.out.println("表格已存在,无法删除");return false;}// 2.获取adminAdmin admin = connection.getAdmin();try {//Hbase 删除表格之前,一定要先标记表格不可用TableName tableName1 = TableName.valueOf(namespace, tableName);admin.disableTable(tableName1);// 3.调用相关的方法删除表格admin.deleteTable(tableName1);System.out.println("删除成功!");} catch (IOException e) {e.printStackTrace();}// 4.关闭adminadmin.close();return true;}

DDL主程序

public class TheProgramDDL {public static void main(String[] args) throws IOException {//测试命名空间// 应该保证连接没有问题,再来调用相关的方法//createNamespace("huanhuan");//判断表格是否存在System.out.println(isTableExists("bigdata","hao"));//        //测试创建表格
//        createTable("bigdata","huanhuan","info1");
//
//        //测试修改表格版本
//        modifyTable("bigdata","hao","info1",6);//删除表格deleteTable("bigdata","hao");//其他代码System.out.println("其他代码");//关闭 HBase的连接HBaseConnection.closeConnection();}
}

HBase2.x(五)HBase API DDL的操作相关推荐

  1. HBase2.x(六)HBase API DML的操作

    文章目录 插入数据 读取数据 扫描数据 过滤扫描数据 删除数据 DML主程序 创建类 HBaseDML public class HBaseDML {// 添加静态属性 connection 指向单例 ...

  2. Hbase table DDL操作及scala API操作

    Hbase shell操作table 建表 直接创建 ns3 是namespace,emp是表,base_info是列簇 hbase(main):037:0> create 'ns3:emp', ...

  3. 2021年大数据HBase(二):HBase集群安装操作

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase集群安装操作 一.上传解压HBase安装包 ...

  4. 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作

    https://www.zybuluo.com/aitanjupt/note/209941 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 〇.摘要 一.基础环境 二.数据存 ...

  5. redis五种数据类型及其常见操作

    redis五种数据类型及其常见操作 Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 1.strin ...

  6. 封装CoreGraphics的API简化绘图操作

    封装CoreGraphics的API简化绘图操作 效果 说明 1. 将CoreGraphics的API接口抽象为对象,让绘图变得简单易懂 2. 简化常用的绘制操作 3. 源码长期更新 源码 https ...

  7. Pandas简明教程:五、Pandas简单统计操作及通用方式

    文章目录 1.DataFrame的方法使用举例 2.DataFrame的方法调用通用方式 3.DataFrame直接调用其它方法 本系列教程教程完整目录: 前面已经提到,Pandas的DataFram ...

  8. JAVA API实现HDFS操作(二)操作函数

    说明:在IDEA集成环境中利用JAVA API实现目录的创建.文件的创建.文件的上传和下载.文件的查看.文件删除.文件的编辑等操作.以下代码均创建在my.dfs包下 创建文件夹 在hdfs系统的根目录 ...

  9. 用Java API实现HDFS操作(三)问题汇总

    说明:整理博主用Java API实现HDFS操作时遇到的问题 问题 为搭建分布式操作环境–在ubuntu16中安装IDEA2021.tomcat9.0.hadoop2.7,建议分配磁盘空间30G及以上 ...

最新文章

  1. 纪念-今天DNN密码破解
  2. 反向区域DNS解析服务
  3. [Java入门笔记] Java语言基础(二):常量、变量与数据类型
  4. 循环往list中add对象却总是add的是一个对象
  5. 程序员的成功是否有规律可循?
  6. 计算机目标导学方法,计算机教学计划
  7. 企业文化是数字化转型最大障碍-解读《2022年首席数据官调查报告》
  8. python-字符串的操作方法_format_列表的操作
  9. 80psi等于多少kpa_PSI和KPa如何转换
  10. 互联网金融革命已让银行家们彻夜难眠
  11. vuex Loding加载..
  12. 关于linux下UART串口编程的困惑
  13. 统计笔记3:statistical inference
  14. 根据屏幕大小动态设置字体rem
  15. Failed to ignore SIGHUP: No error
  16. ubuntu 14.04 使用极点五笔输入法
  17. 品管七大手法-5控制图(转载)
  18. thumbnailator 压缩图片
  19. 【转】手机音视频流媒体开发一些有用资料
  20. Bootstrap学习笔记04

热门文章

  1. HTML转PDF思路
  2. redis基础教程 --基础数据类型的使用
  3. WebGL学习笔记 第三章绘制和变换三角形
  4. memory相关函数
  5. bmi测试身体健康(C语言)
  6. 网约车小弟“抱团全暖”,聚合平台能否与滴滴霸主一较高下?
  7. 小程序 超长页面截图保存web-view+html2canvas
  8. APISIX 如何与 Hydra 集成,搭建集中认证网关助力企业安全
  9. 在浏览器控制台打印彩色文字
  10. 【调剂】山西农业大学2020年硕士研究生调剂公告(第一批)