当前位置: 首页 > news >正文

HBase中的CRUD

        Table接口:负责表数据的基本操作。

       Admin类:负责管理建表、删表、该表等元数据操作的接口。

1、Put方法

1.1、了解put方法之前,必须知道的相关知识。

  1. 在HBase中有一个理念:所有的数据皆为bytes。因此在HBase中所有的数据最终都会被序列化为bytes[ ]保存。
  2. 最简单的将字符串转化为bytes[ ]的方法为:Bytes.toBytes()。

1.2、Put方法的构造函数

        Put(bytes[ ]  row)

        Put(ByteBuffer  row)

        Put(Put  putToCopy)

        Put(bytes[ ]  row , long  ts) 等等;

1.3、addColumn方法常用到调用方式

        addColumn(byte[ ]  family , byte[ ]  qualifier , byte[ ]  value)

        addColumn(byte[ ]  family , byte[ ]  qualifier , long  ts , byte[ ]  value)

        addColumn(byte[ ]  family , ByteBuffer  qualifier , long  ts , ByteBuffer  value)

        注:Put提供了一个语法糖,每一个addColumn返回的都是Put对象自己,因此可以把所有的列添加方法连接起来写。

以下为测试代码:

public static void main(String[] args) throws IOException {//1.实例化配置文件对象Configuration configuration = HBaseConfiguration.create();//2.设置连接接的数据库的IP地址configuration.set("hbase.zookeeper.quorum","master");//3.创建连接对象Connection connection = ConnectionFactory.createConnection(configuration);//4.创建Table接口对象Table table = connection.getTable(TableName.valueOf("user"));//实例化Put对象Put put = new Put(Bytes.toBytes("row1"));//5.准备新增的数据put.addColumn(Bytes.toBytes("info"),Bytes.toBytes("name"),666,Bytes.toBytes("jack")).addColumn(Bytes.toBytes("info"),Bytes.toBytes("age"),Bytes.toBytes("23")).addColumn(Bytes.toBytes("info"),Bytes.toBytes("address"),Bytes.toBytes("河南开封"));//6.执行新增操作table.put(put);//7.控制台打印运行完毕标识语句System.out.println("新增数据执行完毕~");
}

1.4Put对象中其他方法

            append方法 用于追加字符;increment方法  用于数值增加或增减(前提:该数据为long格式的)

2、Get方法

2.1、Get的构造函数

Get  get = new Get(byte[ ]  row)

2.2、Get对象相关方法

        为了提高查询效率。

        addFamily(byte[ ]  family) 添加要取出来的列族

        addColumn(byte[ ]  family , byte[ ]  qualifier)添加要取出来的列族和列

        setTimeRange(long minStramp , long maxStramp)设置要取出的版本范围

      setMaxVersions()设置要取出的版本数,默认为1,不传入参数直接调用就是把MaxVersions设置为Integer.MAV_VEALUE。

2.3、Result类

        byte value()把查询结果的第1列提取出来的快捷写法,用于你只查了一个列的情况。

        boolean isEmpty()查询结果是否为空,可以用来判断是否查询到数据。

        Int size()返回查找到的列数量,也可以提供size是否大于0判断是否查询到数据

        以下为测试代码案例:

public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum","master");Connection connection = ConnectionFactory.createConnection(configuration);Table table = connection.getTable(TableName.valueOf("user"));Get get = new Get(Bytes.toBytes ("row1"));Result result = table.get(get);System.out.println(Bytes.toString(result.value()));System.out.println("判断查询结果是否为空:"+result.isEmpty());System.out.println("查找到的列数为:"+result.size());System.exit(-1);
}

3、exists方法

Table接口提供的exists方法用来快速查询某一个数据是否存在的。

4、delet方法

4.1、Delete对象构造器

        Delete delete = new Delete(byte[ ]  row);

4.2、Delete对象相关方法

        addFamily(byte[ ] family) 删除指定列族

        addFamily(byte[ ] family , long timestamp) 删除指定列族中所以版本号等于或小于给定的版本号的列

        addColumn(byte[ ] family , byte[ ] qualifiler) 删除指定列的最新版本

        addColumn(byte[ ] family , byte[ ] qualifiler , long timestamp) 删除指定列的特定版本

        addColumns(byte[ ] family , byte[ ] qualifiler) 删除指定列的所有版本

        addColumns(byte[ ] family , byte[ ] qualifiler , long timestamp) 删除指定列的等于或小于给定版本号的所有版本。

5、checkAndDelete方法

Table接口提供的,保证在一个原子操作内对数据完成修改和删除操作。

6、mutation方法

Table接口提供的,保证在任意两个操作放在他同一个原子操作内。

RowMutations类 用于整合相关操作 作为mutateRow方法的参数。

代码演示如下:

public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum","192.168.28.130");Connection connection = ConnectionFactory.createConnection(configuration);Table table = connection.getTable(TableName.valueOf("user"));//1.删除  行:row3 列: ageDelete delete = new Delete(Bytes.toBytes("row3"));delete.addColumn(Bytes.toBytes("info"),Bytes.toBytes("age"));//2.修改  name值为chrisPut put1 = new Put(Bytes.toBytes("row3"));put1.addColumn(Bytes.toBytes("info"),Bytes.toBytes("name"),Bytes.toBytes("chris"));//3.新增  info:job值为engineerPut put2 = new Put(Bytes.toBytes("row3"));put2.addColumn(Bytes.toBytes("info"),Bytes.toBytes("job"),Bytes.toBytes("engineer"));//新建RowMutations类  并且把以上操作对象添加进去RowMutations rowMutations = new RowMutations(Bytes.toBytes("row3"));rowMutations.add(delete);rowMutations.add(put1);rowMutations.add(put2);//执行删除/修改/新增操作table.mutateRow(rowMutations);System.out.println("执行完毕~");
}

7.批量操作  

        bath方法

public static void main(String[] args) throws IOException, InterruptedException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum","master");Connection connection = ConnectionFactory.createConnection(configuration);Table table = connection.getTable(TableName.valueOf("user"));//1.查询行row2数据Get get = new Get(Bytes.toBytes("row2"));//2.新增数据  row4 info:age  23Put put = new Put(Bytes.toBytes("row4"));put.addColumn(Bytes.toBytes("info"),Bytes.toBytes("age"),Bytes.toBytes(23));//3.删除行row1数据Delete delete = new Delete(Bytes.toBytes("row1"));//4.批量执行操作ArrayList<Row> list = new ArrayList<Row>();list.add(get);list.add(put);list.add(delete);Object[] results = new Object[list.size()];table.batch(list,results);byte[] value = ((Result) results[0]).getValue(Bytes.toBytes("info"), Bytes.toBytes("name"));System.out.println(Bytes.toString(value));
}

8、Scan扫描

public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum","master");Connection connection = ConnectionFactory.createConnection(configuration);Table table = connection.getTable(TableName.valueOf("user"));Scan scan = new Scan(Bytes.toBytes("row2"));ResultScanner results = table.getScanner(scan);Result result = results.next();byte[] value = result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name"));System.out.println(Bytes.toString(value));
}

相关文章:

HBase中的CRUD

Table接口&#xff1a;负责表数据的基本操作。 Admin类&#xff1a;负责管理建表、删表、该表等元数据操作的接口。 1、Put方法 1.1、了解put方法之前&#xff0c;必须知道的相关知识。 在HBase中有一个理念&#xff1a;所有的数据皆为bytes。因此在HBase中所有的数据最终都…...

C/C++学习笔记 C语言中的\0以及查找字符串中字符出现的频率

在此示例中&#xff0c;计算了字符串对象中字符的频率。 为此&#xff0c;使用size()函数查找字符串对象的长度。然后for 循环迭代直到字符串末尾。 在每次迭代中&#xff0c;检查字符是否出现&#xff0c;如果发现&#xff0c;则计数增加 1。 示例 1 #include <iostream&g…...

在C#中,有多种方式可以实现每天在指定的时间清空数据库数据。下面列出几种常用的方法,并提供简要的实现思路:

在C#中&#xff0c;实现每天在指定时间清空数据库数据的需求&#xff0c;可以通过多种方式来完成。下面列举了几种常用的方法&#xff1a; 方式一&#xff1a;使用 Task 和 Timer 这种方法利用 System.Threading.Timer 类来定时执行清空数据库的操作。 using System; using …...

深入理解java设计模式之单例模式

目录 概述单例模式是什么单例模式的使用场景单例模式的优缺点单例模式的几种实现方式饿汉式懒汉式双重检查锁定机制静态内部类枚举使用容器几种可能破坏单例类的方法多线程环境下的竞争条件使用反射机制使用序列化多个类加载器概述 单例模式是什么 定义:单例模式确保一个类在…...

程序员自由创业周记#36:Gap Year

程序员自由创业周记#36&#xff1a;Gap Year 一整年 刚过去的一周&#xff0c;度过了我31周岁的生日&#xff0c;距离结束上一份工作&#xff0c;刚好一年。一年过得好快&#xff0c;犹记得刚失业那会的迷茫&#xff0c;第一个月的纠结&#xff0c;是继续打工还是自己当“老板…...

Java 类与对象 -- Java 语言的类与对象、构造器、static、final、包和 JAR

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 006 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…...

MTK平台纯色背景抑制

MTK中有两个机制可以抑制纯色背景的亮度&#xff0c;分别是Main target、Histogram。 Main target的纯色背景亮度机制原理大概如下&#xff1a; 将图像分成64*48块&#xff0c;分别统计每一块的亮度Y。 但对于纯色背景时&#xff0c;如果仍然使用Luma来计算&#xff0c;容易造…...

Linux iptables使用详解

一、Linux系统下使用iptables 在Linux中&#xff0c;常用的防火墙工具是iptables。以下是一些基本的iptables命令&#xff0c;用于配置防火墙规则。 查看现有的iptables规则&#xff1a; sudo iptables -L 清除所有现有的规则&#xff08;慎用&#xff0c;可能导致服务不可用…...

算法02 递归算法及其相关问题

递归 在编程中&#xff0c;我们把函数直接或者间接调用自身的过程叫做递归。 递归处理问题的过程是&#xff1a;通常把一个大型的复杂问题&#xff0c;转变成一个与原问题类似的&#xff0c;规模更小的问题来进行求解。 递归的三大要素 函数的参数。在用递归解决问题时&…...

三个pdf工具和浏览软件(pdftk,muppdf,epdfview)

安装pdftk pdftk是一款功能强大的PDF处理工具&#xff0c;主要用于对PDF文件进行各种操作。它提供了丰富的功能&#xff0c;包括但不限于合并、拆分、旋转、加密、解密、添加水印、从PDF文档中解出附件等。pdftk分为图形界面版本和命令行版本&#xff0c;适用于不同的用户需求…...

UKP3d的excel汇总表

长沙某正版用户就EXCEL的图框两点问题&#xff0c;进行交流&#xff1a; 1.1.图框&#xff1a;中英文两行&#xff0c;字体样式&#xff0c;logo加上等个性化需求&#xff1b; cbl回复&#xff1a;9.3后续版本迭代会加图框&#xff08;解决用户个性化需求&#xff09;&#xf…...

体验亚马逊AIGC——Amazon Bedrock

前言 随着人工智能技术的不断发展&#xff0c;我们已经进入了一个全新的时代&#xff0c;即AI驱动的时代。在这个时代&#xff0c;人工智能已经逐渐成为我们生活中不可或缺的一部分&#xff0c;它可以帮助我们更好地处理各种复杂的问题&#xff0c;提高我们的工作效率&#xff…...

Vue前端服务是什么:深入解析与实际应用

Vue前端服务是什么&#xff1a;深入解析与实际应用 在现今的互联网开发领域&#xff0c;前端技术日新月异&#xff0c;Vue.js作为其中的佼佼者&#xff0c;其前端服务更是成为了众多开发者关注的焦点。那么&#xff0c;Vue前端服务究竟是什么&#xff1f;它有哪些核心要素和实…...

mysql_ssl_rsa_setup使用详解

mysql_ssl_rsa_setup 是一个MySQL附带的工具&#xff0c;用于自动创建SSL证书和密钥文件&#xff0c;以便在MySQL服务器与客户端之间启用安全的SSL/TLS连接。这对于确保数据传输的安全性是非常重要的&#xff0c;尤其是在不安全的网络环境中。下面是对mysql_ssl_rsa_setup使用的…...

FreeSWITCH入门到精通系列(三):FreeSWITCH基础概念与架构

FreeSWITCH入门到精通系列&#xff08;三&#xff09;&#xff1a;FreeSWITCH基础概念与架构 前言 在前两篇博客中&#xff0c;我们介绍了FreeSWITCH的基本概念和安装与配置。本篇文章将深入探讨FreeSWITCH的基础概念和架构&#xff0c;帮助您更好地理解这个强大的通信平台的…...

【C++】AVL树/红黑树实现及map与set的封装

前言 【C】二叉树进阶&#xff08;二叉搜索树&#xff09; 这篇文章讲述了关于二叉搜索树知识&#xff0c;但是二叉搜索树有其自身的缺陷&#xff0c;假如往树中插入的元素有序或者接近有序&#xff0c;二叉搜索树就会退化成单支树&#xff0c;时间复杂度会退化成O(N)&#xff…...

利用CSS隐藏HTML元素并插入替代内容

在创建一个支持切换阅读模式和答题模式的Anki问答题模板中&#xff0c;我创建了一个支持切换阅读模式和答题模式的问答题模板&#xff0c;该文最终利用JavaScript将Anki输出的向下箭头删除&#xff0c;并插入自定义的提示语。经过进一步测试&#xff0c;发现实现上述功能完全不…...

第二节 单机版本redis部署

1. 部署环境 操作系统&#xff1a;centos7.XCPU: 2H内存&#xff1a;4GIP&#xff1a; 192.168.100.102部署版本&#xff1a; redis-7.0.15.tar.gz基础环境&#xff1a; gcc下载 2. 上传Redis安装包 [rootlocalhost opt]# ll 总用量 2932 drwxrwxr-x. 8 root root 4096 1…...

Vim 常用指令

Vim 是一款功能强大且高度可定制的文本编辑器。其高效的编辑方式使其成为许多程序员和系统管理员的首选。 1. Vim 的基本模式 Vim 具有以下几种基本模式&#xff1a; 正常模式&#xff08;Normal mode&#xff09;&#xff1a;用于浏览和编辑文本&#xff08;按 ESC 进入&am…...

PySide6实现pdf转化为word和长图片

目录 一:实现思路 二:实现过程 三:完整代码和实现 一:实现思路 最近在使用wps,发现wps中使用pdf转化为长图片还需要收费,这么不地道。就想自己能不能用程序实现这种功能的。还好python在自动化办公领域比较强悍,对文档操作也是得心应手。因此记录下用python实现pdf转…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...