文章目录

  • 插入数据
  • 读取数据
  • 扫描数据
  • 过滤扫描数据
  • 删除数据
  • DML主程序

创建类 HBaseDML

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

插入数据

 /*** 插入数据** @param namespace    命名空间名称* @param tableName    表格名称* @param rowKey       主键* @param ColumnFamily 列族名称* @param columnName   列名* @param value        值*/public static void putCell(String namespace, String tableName, String rowKey, String ColumnFamily, String columnName, String value) throws IOException {// 1.获取tableTable table = connection.getTable(TableName.valueOf(namespace, tableName));// 2.调用相关方法插入数据// 2.1 创建put对象Put put = new Put(Bytes.toBytes(rowKey));// 2.2 给put对象添加数据put.addColumn(Bytes.toBytes(ColumnFamily), Bytes.toBytes(columnName), Bytes.toBytes(value));// 2.3try {table.put(put);} catch (IOException e) {e.printStackTrace();}// 3.关闭tabletable.close();}

读取数据

/*** 读取数据,读取对应一行中的某一列** @param namespace    命名空间名称* @param tableName    表格名称* @param rowKey       主键* @param ColumnFamily 列族名称* @param columnName   列名*/public static void getCells(String namespace, String tableName, String rowKey, String ColumnFamily, String columnName) throws IOException {//1. 获取tableTable table = connection.getTable(TableName.valueOf(namespace, tableName));//2. 创建get对象Get get = new Get(Bytes.toBytes(rowKey));// 如果直接调用get方法读取数据,此时读一整行数据// 如果想读取某一列的数据,需要添加对应的参数get.addColumn(Bytes.toBytes(ColumnFamily), Bytes.toBytes(columnName));// 设置读取数据的版本get.readAllVersions();try {// 读取数据,得到result对象Result result = table.get(get);//处理数据Cell[] cells = result.rawCells();//测试方法:直接把读取的数据打印到控制台//如果是实际开发, 需要再写额外的方法,对应处理数据for (Cell cell : cells) {//Cell存储数据比较底层String value = new String(CellUtil.cloneValue(cell));System.out.println(value);}} catch (IOException e) {e.printStackTrace();}//关闭table资源table.close();}

扫描数据

/*** 扫描数据** @param namespace 命名空间* @param tableName 表格名称* @param startRow  开始的 row 包含的* @param stopRow   结束的 row 不包含*/public static void scanRows(String namespace, String tableName, String startRow, String stopRow) throws IOException {//1. 获取tableTable table = connection.getTable(TableName.valueOf(namespace, tableName));//2.创建Scan对象Scan scan = new Scan();//如果此时直接调用,会扫描整个表//添加参数, 来控制扫描的数据//默认包含scan.withStartRow(Bytes.toBytes(startRow));//默认不包含scan.withStopRow(Bytes.toBytes(stopRow));//读取多行数据,获得scannertry {ResultScanner scanner = null;scanner = table.getScanner(scan);//result来记录一行数据, cell数组//ResultScanner 来记录多行数据 result的数组for (Result result : scanner) {Cell[] cells = result.rawCells();for (Cell cell : cells) {System.out.println(new String(CellUtil.cloneRow(cell)) + "-" + new String(CellUtil.cloneFamily(cell)) + "-" + new String(CellUtil.cloneQualifier(cell))+ "-" + new String(CellUtil.cloneValue(cell)) + "\t");}System.out.println();}} catch (IOException e) {e.printStackTrace();}//关闭连接table.close();}

过滤扫描数据

 /*** 带过滤的扫描数据** @param namespace    命名空间* @param tableName    表格名称* @param startRow     开始的 row 包含的* @param stopRow      结束的 row 不包含* @param columnFamily 列族名称* @param columnName   列名称* @param value        value值*/public static void filterRows(String namespace, String tableName, String startRow, String stopRow, String columnFamily, String columnName, String value) throws IOException {//1. 获取tableTable table = connection.getTable(TableName.valueOf(namespace, tableName));//2.创建Scan对象Scan scan = new Scan();//如果此时直接调用,会扫描整个表//添加参数, 来控制扫描的数据//默认包含scan.withStartRow(Bytes.toBytes(startRow));//默认不包含scan.withStopRow(Bytes.toBytes(stopRow));//可以添加多个过滤FilterList filterList = new FilterList();//创建过滤器//(1) 结果只保留当前列的数据ColumnValueFilter columnValueFilter = new ColumnValueFilter(//列族名称Bytes.toBytes(columnFamily),//列名Bytes.toBytes(columnName),//比较关系CompareOperator.EQUAL,//值Bytes.toBytes(value));//(2) 结果保留整行数据SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(//列族名称Bytes.toBytes(columnFamily),//列名Bytes.toBytes(columnName),//比较关系CompareOperator.EQUAL,//值Bytes.toBytes(value));//        filterList.addFilter(columnValueFilter);filterList.addFilter(singleColumnValueFilter);//添加过滤scan.setFilter(filterList);//读取多行数据,获得scannertry {ResultScanner scanner = null;scanner = table.getScanner(scan);//result来记录一行数据, cell数组//ResultScanner 来记录多行数据 result的数组for (Result result : scanner) {Cell[] cells = result.rawCells();for (Cell cell : cells) {System.out.println(new String(CellUtil.cloneRow(cell)) + "-" + new String(CellUtil.cloneFamily(cell)) + "-" + new String(CellUtil.cloneQualifier(cell))+ "-" + new String(CellUtil.cloneValue(cell)) + "\t");}System.out.println();}} catch (IOException e) {e.printStackTrace();}//关闭连接table.close();}

删除数据

    /*** 删除一行中的一列数据** @param namespace    命名空间名称* @param tableName    表格名称* @param rowKey       主键* @param columnFamily 列族* @param columnName   列名*/public static void deleteColumn(String namespace, String tableName, String rowKey, String columnFamily, String columnName) throws IOException {//1. 获取tableTable table = connection.getTable(TableName.valueOf(namespace, tableName));//2. 创建delete对象Delete delete = new Delete(Bytes.toBytes(rowKey));// 添加列信息// addColumn删除一个版本delete.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(columnName));// addColumns删除所有的版本//按照逻辑需要删除所有版本的数据//delete.addColumns(Bytes.toBytes(columnFamily),Bytes.toBytes(columnName));try {table.delete(delete);}catch (IOException e){e.printStackTrace();}//关闭tabletable.close();}

DML主程序

public class TheProgramDML {public static void main(String[] args) throws IOException {//添加数据
//        putCell("bigdata","huanhuan","1001","info","name","欢欢");
//        putCell("bigdata","huanhuan","2001","info","name","欢欢");
//        putCell("bigdata","huanhuan","1001","info","name","呆哥");
//        putCell("bigdata","huanhuan","1001","info","name","昊哥");
//
//
//        //读取数据
//        getCells("bigdata","huanhuan","1001","info","name");
//
//        //扫描数据
//        scanRows("bigdata","huanhuan","1001","1002");
//
//        //测试过滤扫描数据
//        filterRows("bigdata","huanhuan","1001","1002","info","name","欢欢");//删除数据deleteColumn("bigdata","huanhuan","1001","info","name");//测试成功System.out.println("测试成功");//关闭连接HBaseConnection.closeConnection();}
}

HBase2.x(六)HBase API DML的操作相关推荐

  1. HBase2.x(五)HBase API DDL的操作

    文章目录 创建命名空间 创建表格是否存在 创建表 修改表格中一个列族的版本 删除表格 DDL主程序 创建 HBaseDDL 类,添加静态方法即可作为工具类 public class HBaseDDL ...

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

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

  3. Hive:命令行界面、数据类型、DDL数据定义(数据库及表操作/分区分桶)、DML数据操作(数据导入导出)

    目录 1.Hive命令行界面 1.1.选项列表 1.2.变量和属性 1.2.1.Hive中变量和属性命名空间 1.2.2.用户自定义变量 1.2.3..hiverc文件 1.3.一次使用的命令 1.4 ...

  4. 数据库DML数据操作语言

    文章目录 DML 数据操作语言 1. 插入数据(INSERT) 1.1 语法: 1.2 插入默认值 注意事项: 1.3 全列插入 2. 修改数据(UPDATE) 2.1 语法 注意 2.2 修改指定记 ...

  5. 【数据库基础知识二】数据库DataBase(简称DB),数据库基本概念、DDL:数据定义语言,用来操作数据库对象、DML:数据操作语言,用来操作表中的数据

    14天阅读挑战赛 目录 数据库基本概念 数据库DataBase(简称DB) 数据库管理系统Database management system(简称DBMS) 如何操作DBMS? 连接数据库的方式: ...

  6. 2019-7-26 [MySQL] 安装与介绍 语句分类/语法 数据类型 DDL数据定义:创建/查看/删除/使用 DML数据操作:增删改 主键约束 自动增长列 非空约束 默认值 Navicat

    文章目录 0.知识回顾 1.数据库介绍 1.1 数据库概述 1.1.1 什么是数据库 1.1.2 什么是数据库管理系统 1.1.3 数据库与数据库管理系统的关系 1.2 数据库表 1.3 表数据 1. ...

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

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

  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. 哈希表的分类,创建,查找 以及相关问题解决
  2. 你想要的宏基因组-微生物组知识全在这(181101)
  3. RNN和LSTM的正向/前向传播-图示公式和代码
  4. C++编程进阶8(最好不要实现类型转换运算符、单形参的构造函数与类型转换、临时对象与RVO)
  5. Vcenter 管理中心 在服务器上新建虚拟机及安装系统
  6. 转-SQL 2005修改系统表
  7. ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
  8. ROS queue_size和buff_size设置
  9. java 离散算法_用JAVA语言实现离散数学算法
  10. UVA10063 Knuth‘s Permutation【排列组合】
  11. CSS表格及表单美化
  12. eclipse运行不了jsp代码,错误代码:couldn't create the java virtual machine. a fatal exception has occurred.
  13. Manjaro Gnome Hidpi 缩放问题
  14. 一语道破项目管理知识体系42个过程
  15. 能上msn,icq等聊天的web工具meebo.com
  16. 10个 安卓应用商店开发者公司账号注册(2022最新最全)
  17. 龙芯Fedora21平台制作docker镜像,并且解决vi乱码问题
  18. 深圳市林享科技有限公司
  19. Kali Linux基础
  20. 音乐程序(天空之城)

热门文章

  1. python 混合整数规划_混合整数规划仓库位置(Python+GLPK)
  2. mysql mmm 虚拟ip不通_mysql-mmm故障解决一例
  3. (九)打印机驱动设置—USB接口的设置
  4. 全球存算一体技术研究及量产情况最新进展(收录于存算一体芯片赛道投资融资分析)
  5. gradle编译慢解决_Gradle build 太慢,可能是你使用的姿势不对
  6. 手机端没有好的录屏软件?地表最强移动端录屏软件了解一下?
  7. MATLAB 信号与系统
  8. 树莓派4b制作加载的FLASH文件系统并移植busybox
  9. ATT的SIM卡(GoPhone)连不上4G网络怎么办
  10. 耳机接口规则_线控缘何不兼容 3.5mm耳机接口的奥秘