HBase2.x(六)HBase API DML的操作
文章目录
- 插入数据
- 读取数据
- 扫描数据
- 过滤扫描数据
- 删除数据
- 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的操作相关推荐
- HBase2.x(五)HBase API DDL的操作
文章目录 创建命名空间 创建表格是否存在 创建表 修改表格中一个列族的版本 删除表格 DDL主程序 创建 HBaseDDL 类,添加静态方法即可作为工具类 public class HBaseDDL ...
- 2021年大数据HBase(二):HBase集群安装操作
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase集群安装操作 一.上传解压HBase安装包 ...
- Hive:命令行界面、数据类型、DDL数据定义(数据库及表操作/分区分桶)、DML数据操作(数据导入导出)
目录 1.Hive命令行界面 1.1.选项列表 1.2.变量和属性 1.2.1.Hive中变量和属性命名空间 1.2.2.用户自定义变量 1.2.3..hiverc文件 1.3.一次使用的命令 1.4 ...
- 数据库DML数据操作语言
文章目录 DML 数据操作语言 1. 插入数据(INSERT) 1.1 语法: 1.2 插入默认值 注意事项: 1.3 全列插入 2. 修改数据(UPDATE) 2.1 语法 注意 2.2 修改指定记 ...
- 【数据库基础知识二】数据库DataBase(简称DB),数据库基本概念、DDL:数据定义语言,用来操作数据库对象、DML:数据操作语言,用来操作表中的数据
14天阅读挑战赛 目录 数据库基本概念 数据库DataBase(简称DB) 数据库管理系统Database management system(简称DBMS) 如何操作DBMS? 连接数据库的方式: ...
- 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. ...
- 封装CoreGraphics的API简化绘图操作
封装CoreGraphics的API简化绘图操作 效果 说明 1. 将CoreGraphics的API接口抽象为对象,让绘图变得简单易懂 2. 简化常用的绘制操作 3. 源码长期更新 源码 https ...
- JAVA API实现HDFS操作(二)操作函数
说明:在IDEA集成环境中利用JAVA API实现目录的创建.文件的创建.文件的上传和下载.文件的查看.文件删除.文件的编辑等操作.以下代码均创建在my.dfs包下 创建文件夹 在hdfs系统的根目录 ...
- 用Java API实现HDFS操作(三)问题汇总
说明:整理博主用Java API实现HDFS操作时遇到的问题 问题 为搭建分布式操作环境–在ubuntu16中安装IDEA2021.tomcat9.0.hadoop2.7,建议分配磁盘空间30G及以上 ...
最新文章
- 哈希表的分类,创建,查找 以及相关问题解决
- 你想要的宏基因组-微生物组知识全在这(181101)
- RNN和LSTM的正向/前向传播-图示公式和代码
- C++编程进阶8(最好不要实现类型转换运算符、单形参的构造函数与类型转换、临时对象与RVO)
- Vcenter 管理中心 在服务器上新建虚拟机及安装系统
- 转-SQL 2005修改系统表
- ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
- ROS queue_size和buff_size设置
- java 离散算法_用JAVA语言实现离散数学算法
- UVA10063 Knuth‘s Permutation【排列组合】
- CSS表格及表单美化
- eclipse运行不了jsp代码,错误代码:couldn't create the java virtual machine. a fatal exception has occurred.
- Manjaro Gnome Hidpi 缩放问题
- 一语道破项目管理知识体系42个过程
- 能上msn,icq等聊天的web工具meebo.com
- 10个 安卓应用商店开发者公司账号注册(2022最新最全)
- 龙芯Fedora21平台制作docker镜像,并且解决vi乱码问题
- 深圳市林享科技有限公司
- Kali Linux基础
- 音乐程序(天空之城)
热门文章
- python 混合整数规划_混合整数规划仓库位置(Python+GLPK)
- mysql mmm 虚拟ip不通_mysql-mmm故障解决一例
- (九)打印机驱动设置—USB接口的设置
- 全球存算一体技术研究及量产情况最新进展(收录于存算一体芯片赛道投资融资分析)
- gradle编译慢解决_Gradle build 太慢,可能是你使用的姿势不对
- 手机端没有好的录屏软件?地表最强移动端录屏软件了解一下?
- MATLAB 信号与系统
- 树莓派4b制作加载的FLASH文件系统并移植busybox
- ATT的SIM卡(GoPhone)连不上4G网络怎么办
- 耳机接口规则_线控缘何不兼容 3.5mm耳机接口的奥秘