DDL:

public class HbaseClientDemo {Connection conn = null;@Beforepublic void getConn() throws Exception{// 构建一个连接对象Configuration conf = HBaseConfiguration.create(); // 会自动加载hbase-site.xmlconf.set("hbase.zookeeper.quorum", "hdp-01:2181,hdp-02:2181,hdp-03:2181");conn = ConnectionFactory.createConnection(conf);}/*** DDL* @throws Exception */@Testpublic void testCreateTable() throws Exception{// 从连接中构造一个DDL操作器Admin admin = conn.getAdmin();// 创建一个表定义描述对象HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf("user_info"));// 创建列族定义描述对象HColumnDescriptor hColumnDescriptor_1 = new HColumnDescriptor("base_info");hColumnDescriptor_1.setMaxVersions(3); // 设置该列族中存储数据的最大版本数,默认是1HColumnDescriptor hColumnDescriptor_2 = new HColumnDescriptor("extra_info");// 将列族定义信息对象放入表定义对象中hTableDescriptor.addFamily(hColumnDescriptor_1);hTableDescriptor.addFamily(hColumnDescriptor_2);// 用ddl操作器对象:admin 来建表admin.createTable(hTableDescriptor);// 关闭连接admin.close();conn.close();}/*** 删除表* @throws Exception */@Testpublic void testDropTable() throws Exception{Admin admin = conn.getAdmin();// 停用表admin.disableTable(TableName.valueOf("user_info"));// 删除表admin.deleteTable(TableName.valueOf("user_info"));admin.close();conn.close();}// 修改表定义--添加一个列族@Testpublic void testAlterTable() throws Exception{Admin admin = conn.getAdmin();// 取出旧的表定义信息HTableDescriptor tableDescriptor = admin.getTableDescriptor(TableName.valueOf("user_info"));// 新构造一个列族定义HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("other_info");hColumnDescriptor.setBloomFilterType(BloomType.ROWCOL); // 设置该列族的布隆过滤器类型// 将列族定义添加到表定义对象中tableDescriptor.addFamily(hColumnDescriptor);// 将修改过的表定义交给admin去提交admin.modifyTable(TableName.valueOf("user_info"), tableDescriptor);admin.close();conn.close();}/*** DML -- 数据的增删改查*/}

DML:

public class HbaseClientDML {Connection conn = null;@Beforepublic void getConn() throws Exception{// 构建一个连接对象Configuration conf = HBaseConfiguration.create(); // 会自动加载hbase-site.xmlconf.set("hbase.zookeeper.quorum", "hdp-01:2181,hdp-02:2181,hdp-03:2181");conn = ConnectionFactory.createConnection(conf);}/*** 增* 改:put来覆盖* @throws Exception */@Testpublic void testPut() throws Exception{// 获取一个操作指定表的table对象,进行DML操作Table table = conn.getTable(TableName.valueOf("user_info"));// 构造要插入的数据为一个Put类型(一个put对象只能对应一个rowkey)的对象Put put = new Put(Bytes.toBytes("001"));put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("张三"));put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("age"), Bytes.toBytes("18"));put.addColumn(Bytes.toBytes("extra_info"), Bytes.toBytes("addr"), Bytes.toBytes("北京"));Put put2 = new Put(Bytes.toBytes("002"));put2.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("李四"));put2.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("age"), Bytes.toBytes("28"));put2.addColumn(Bytes.toBytes("extra_info"), Bytes.toBytes("addr"), Bytes.toBytes("上海"));ArrayList<Put> puts = new ArrayList<>();puts.add(put);puts.add(put2);// 插进去table.put(puts);table.close();conn.close();}/*** 循环插入大量数据* @throws Exception */@Testpublic void testManyPuts() throws Exception{Table table = conn.getTable(TableName.valueOf("user_info"));ArrayList<Put> puts = new ArrayList<>();for(int i=0;i<100000;i++){Put put = new Put(Bytes.toBytes(""+i));put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("username"), Bytes.toBytes("张三"+i));put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("age"), Bytes.toBytes((18+i)+""));put.addColumn(Bytes.toBytes("extra_info"), Bytes.toBytes("addr"), Bytes.toBytes("北京"));puts.add(put);}table.put(puts);}/*** 删* @throws Exception */@Testpublic void testDelete() throws Exception{Table table = conn.getTable(TableName.valueOf("user_info"));// 构造一个对象封装要删除的数据信息Delete delete1 = new Delete(Bytes.toBytes("001"));Delete delete2 = new Delete(Bytes.toBytes("002"));delete2.addColumn(Bytes.toBytes("extra_info"), Bytes.toBytes("addr"));ArrayList<Delete> dels = new ArrayList<>();dels.add(delete1);dels.add(delete2);table.delete(dels);table.close();conn.close();}/*** 查* @throws Exception */@Testpublic void testGet() throws Exception{Table table = conn.getTable(TableName.valueOf("user_info"));Get get = new Get("002".getBytes());Result result = table.get(get);// 从结果中取用户指定的某个key的valuebyte[] value = result.getValue("base_info".getBytes(), "age".getBytes());System.out.println(new String(value));System.out.println("-------------------------");// 遍历整行结果中的所有kv单元格CellScanner cellScanner = result.cellScanner();while(cellScanner.advance()){Cell cell = cellScanner.current();byte[] rowArray = cell.getRowArray();  //本kv所属的行键的字节数组byte[] familyArray = cell.getFamilyArray();  //列族名的字节数组byte[] qualifierArray = cell.getQualifierArray();  //列名的字节数据byte[] valueArray = cell.getValueArray(); // value的字节数组System.out.println("行键: "+new String(rowArray,cell.getRowOffset(),cell.getRowLength()));System.out.println("列族名: "+new String(familyArray,cell.getFamilyOffset(),cell.getFamilyLength()));System.out.println("列名: "+new String(qualifierArray,cell.getQualifierOffset(),cell.getQualifierLength()));System.out.println("value: "+new String(valueArray,cell.getValueOffset(),cell.getValueLength()));}table.close();conn.close();}/*** 按行键范围查询数据* @throws Exception */@Testpublic void testScan() throws Exception{Table table = conn.getTable(TableName.valueOf("user_info"));// 包含起始行键,不包含结束行键,但是如果真的想查询出末尾的那个行键,那么,可以在末尾行键上拼接一个不可见的字节(\000)Scan scan = new Scan("10".getBytes(), "10000\001".getBytes());ResultScanner scanner = table.getScanner(scan);Iterator<Result> iterator = scanner.iterator();while(iterator.hasNext()){Result result = iterator.next();// 遍历整行结果中的所有kv单元格CellScanner cellScanner = result.cellScanner();while(cellScanner.advance()){Cell cell = cellScanner.current();byte[] rowArray = cell.getRowArray();  //本kv所属的行键的字节数组byte[] familyArray = cell.getFamilyArray();  //列族名的字节数组byte[] qualifierArray = cell.getQualifierArray();  //列名的字节数据byte[] valueArray = cell.getValueArray(); // value的字节数组System.out.println("行键: "+new String(rowArray,cell.getRowOffset(),cell.getRowLength()));System.out.println("列族名: "+new String(familyArray,cell.getFamilyOffset(),cell.getFamilyLength()));System.out.println("列名: "+new String(qualifierArray,cell.getQualifierOffset(),cell.getQualifierLength()));System.out.println("value: "+new String(valueArray,cell.getValueOffset(),cell.getValueLength()));}System.out.println("----------------------");}}@Testpublic void test(){String a = "000";String b = "000\0";System.out.println(a);System.out.println(b);byte[] bytes = a.getBytes();byte[] bytes2 = b.getBytes();System.out.println("");}}

HBase--JavaAPI的操作,创建表修改表,增删改查数据相关推荐

  1. C案例:创建顺序表并进行增删改查操作

    一.顺序表概述 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中 ...

  2. Android复习07【创建数据库、insert()插入数据、查看数据库、根据列索引获取参数值、根据列名-返回索引、增删改查数据、数据分页、修改表结构、Room框架】

    2020-04-09-星期四-第八周 目   录 创建数据库 insert()方法 查看数据库(Save as保存) 菜鸟教程---SQLite数据库 根据 列索引 获取 参数值 列比较多---根据列 ...

  3. mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

    MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...

  4. 【Laravel】Laravel-admin后台框架-2创建数据表建立模块增删改查CURD(2)

    前言 前面的操作我们已经能够 安装Laravel-admin 创建数据表并生成模型 修改模型实现按业务写入数据 可以参考之前的文章 [Laravel]Laravel-admin后台框架-2创建数据表建 ...

  5. SAP abap内表分类与增删改查操作

    SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...

  6. mysql创建数据表列子,MySQL 创建数据库及简单增删改查

    MySQL 创建数据库及简单增删改查 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 登入: Enter passwor ...

  7. SpringMVC表单数据增删改查简易梳理(含实例代码)

    使用SpringMVC创建表单进行数据的增删改查是javaEE开发的基本功,本人根据自己最近开发的基于jeecms框架的网站平台来梳理数据增删改查的思路. 首先根据所需表单页面设计数据库,定义不同字段 ...

  8. MySQL学习总结(2) --- 数据表管理(增删改查)、使用DQL查询数据(SELECT)

    MySQL学习总结(2) - 数据表管理(增删改查).使用DQL查询数据(SELECT) 1. 数据管理(增删改查) 数据库数据管理方法: a.通过SQLyog等管理工具管理数据库数据 b. 通过DM ...

  9. Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)

    JEECG 智能开发平台. 开发模式由代码生成器转变为Online Coding模式                      (通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义 ...

  10. 【JS笔记】JS中的DOM对象以及通过JS获取DOM结点,操作DOM属性、DOM增删改查

    这篇文章,主要介绍JS中的DOM对象以及通过JS获取DOM结点,操作DOM属性.DOM增删改查​​​​​​​. 目录 一.JS中的DOM 1.1.什么是DOM 1.2.获取DOM结点 (1)获取htm ...

最新文章

  1. 过度沉思_从沉思到演出:我如何开始我的自由职业
  2. html页面在ie上出现404怎么解决,如何解决自定义404页面在IE等浏览器中无法显示问题...
  3. 【Eclipse】 Eclipse 中JPEGEncodeParam 错误波浪线问题
  4. MATLAB实战系列(二十四)-MATLAB粒子群(PSO)优化算法在电力系统中的应用程序集合
  5. 网易严选高段位的“超级用户”数据运营法则
  6. 数据分析中的两种偏差
  7. Docker有什么好处?
  8. html自定义滚动条不占位,如何实现滚动条在各浏览器中不占用布局
  9. javaweb中mysql数据库的回滚操作代码
  10. java的interface_java中如何实现一个接口interface-百度经验
  11. 使用libvirt技术监控虚拟机资源利用情况
  12. Python的filter、map、reduce与lambda结合使用
  13. 科技社计算机部长竞选演讲稿,护理组长竞聘演讲稿_计算机专业组长竞聘演讲稿范文...
  14. 益智小游戏(app)
  15. Java高并发实战,锁的优化
  16. Flutter 即学即用系列博客——06 超实用 Widget 集锦
  17. mxnet入门--第4篇
  18. 微信公众号文章数据分析报表,导出Excel年报统计
  19. 计算机处理器i3 i5,realme Book笔记本高清渲染图曝光 配置上搭载11代酷睿i3/i5处理器...
  20. Petya and Countryside

热门文章

  1. dell客服(dell客服维修中心)
  2. 手机“隐藏功能”揭秘
  3. java中float、double和BigDecimal的精度问题(fastjson、Jackson以及实例化的方式)
  4. 【UCIe】初识 UCIe
  5. GOOGLE HACKS巧妙使用网络搜索的技巧和工具(第二版)已经出版(上)--IT man
  6. 基本类型为空导致线上空指针异常问题 java.lang.NullPointerException: cannot unbox null value
  7. android扇形动画弹出icon的功能
  8. 2022-04-14每日刷题打卡
  9. 【软考 系统架构设计师】计算机组成与体系结构⑥ 流水线
  10. 《盟威软件快速开发平台》开发