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));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【云原生| K8S系列】Kubernetes Daemonset,全面指南

Kubernetes中的DaemonSet是什么? Kubernetes是一个分布式系统&#xff0c;Kubernetes平台管理员应该有一些功能可以在所有节点上运行特定于平台的应用程序。例如&#xff0c;在所有Kubernetes节点上运行日志代理。 这就是Daemonset发挥作用的地方。 Daemonset是一个原生的K…

yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(cpp版)

先贴出github地址&#xff0c;欢迎大家批评指正&#xff1a;https://github.com/taifyang/yolo-inference 不知不觉LZ已经快工作两年了&#xff0c;由于之前的工作内容主要和模型部署相关&#xff0c;想着利用闲暇时间写一些推理方面的经验总结&#xff0c;于是有了这个工程。其…

JsSIP+FreeSwitch+Vue实现WebRtc音视频通话

效果 让同事帮我测的&#xff0c;在两个电脑分别打开该页面&#xff0c;一个注册 1007 分机号&#xff0c;另一个注册 1005&#xff0c;然后拨打视频电话 依赖版本 jssip&#xff1a;3.6.1 freeswitch&#xff1a;1.10.5-release~64bit vue&#xff1a;2.6.12 488错误解…

【杂记-浅谈SNMP网络管理标准协议】

一、SNMP概述、作用、优点 概述 1、SNMP&#xff0c;Simple Network Management Protocol&#xff0c;简单网络管理协议、利用网络管理网络&#xff0c;网络管理员利用SNMP平台在网络上的任意节点完成信息查询、信息修改和故障排查等工作&#xff0c;工作效率得以提高。 2、SN…

基于WPF技术的换热站智能监控系统06--实现左侧故障统计

1、区域划分 2、ui实现 这里使用的是livechart的柱状图呈现的 3、运行效果 走过路过不要错过&#xff0c;点赞关注收藏又圈粉&#xff0c;共同致富&#xff0c;为财务自由作出贡献

Linux基础IO【II】

今天&#xff0c;我们接着在上一篇文章的基础上&#xff0c;继续学习基础IO。观看本文章之前&#xff0c;建议先看&#xff1a;Linux基础IO【I】&#xff0c;那&#xff0c;我们就开始吧&#xff01; 一.文件描述符 1.重新理解文件 文件操作的本质&#xff1a;进程和被打开文件…

PCA降维算法

decomposition.h #pragma once #include <arrayfire.h>namespace decomposition {class PCA{public:af::array zero_centred(af::array

DETR实现目标检测(一)-训练自己的数据集

1、DETR架构 DETR&#xff08;Detection Transformer&#xff09;是一种新型的目标检测模型&#xff0c;由Facebook AI Research (FAIR) 在2020年提出。DETR的核心思想是将目标检测任务视为一个直接的集合预测问题&#xff0c;而不是传统的两步或多步预测问题。这种方法的创新…

cesium 渐变虚线效果 PolylineDashMaterialProperty

cesium中有虚线材质PolylineDashMaterialProperty&#xff0c;可以在这个材质的基础上结合uv设置每个顶点的透明度&#xff0c;就能实现渐变的效果了。 一、原理&#xff1a;在glsl中结合uv设置每个顶点的透明度 vec2 st materialInput.st; material.alpha fragColor.a * (1…

Mongodb在UPDATE操作中使用$pull操作

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第68篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

链表题目之指定区间处理

前言 链表中有一些题目是需要知道并且记住对应的技巧的&#xff0c;有一些题目就是基本的链表技巧手动模拟推演注意细节等。 对于需要知道并且记住对应技巧的题目会有专门的一栏进行讲解&#xff0c;此类题目主要有&#xff1a;相交链表、环形链表、回文链表等&#xff0c;这些…

LeetCode | 27.移除元素

这道题的思路和26题一模一样&#xff0c;由于要在元素组中修改&#xff0c;我们可以设置一个index表示目前要修改原数组的第几位&#xff0c;由于遍历&#xff0c;访问原数组永远会在我们修改数组之前&#xff0c;所以不用担心数据丢失的问题&#xff0c;一次遍历数组&#xff…

18. 四数之和 - 力扣

1. 题目 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;&#xff1a; 0 …

LVS+Keepalived NGINX+Keepalived 高可用群集实战部署

Keepalived及其工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&#xff0c;可以解决静态路由出现的单点故障问题。 VRRP协议&#xff08;虚拟路由冗余协议&#xff09; 是针对路由器的一种备份解决方案由多台路由器组成一个热备组&#xff0c;通过共用的…

Kolmogorov-Arnold Networks (KANs)

KAN 这是个非常厉害的设计&#xff0c;看完论文我再写评价。 下面是实验&#xff0c;都是作者给出的代码 >>> from kan.KANLayer import KANLayer >>> model KANLayer(in_dim3, out_dim5) >>> (model.in_dim, model.out_dim) (3, 5)>>>…

使用kubeadm命令创建集群问题汇总

使用kubeadm命令创建集群问题汇总 kubeadm init执行命令超时报错 通常是系统没有初始化好&#xff0c;例如swap、selinux、监听地址IP设置错误 kubeadm init部署后报错&#xff0c;修改配置后重新执行初始化报错 需要清空集群配置&#xff08;在需要清空配置的对应节点执行…

五、LVS原理

目录 5.1 LVS 相关原理 5.1.1 LVS集群的体系结构以及特点 5.1.1.1 LVS简介 5.1.1.2 LVS体系结构 5.1.1.3 LVS相关术语 5.1.1.4 LVS工作模式 5.1.1.5 LVS调度算法 5.1.2 LVS-DR集群介绍 5.1.2.1 LVS-DR模式工作原理 5.1.2.2 LVS-DR模式应用特点 5.1.2.3 LVS-DR模式ARP抑制 5.1…

数据仓库之元数据

元数据在数据仓库中的作用至关重要。元数据是关于数据的数据&#xff0c;它描述了数据的内容、结构、位置和业务含义。元数据管理是数据仓库成功实施和运行的核心部分。以下是对数据仓库元数据的详细介绍&#xff1a; 1. 元数据的定义 元数据是描述数据属性的信息集合&#x…

大语言模型学习笔记-1

1. GPT发展历程 GPT-1:通用文本训练特定任务微调GPT-2/GPT-3:扩大与训练数据和模型参数规模&#xff0c;显著提升模型性能&#xff0c;并确立了基于自然语言形式的通用任务解决路径。GPT-3.5:在GPT-3的基础上&#xff0c;通过代码训练、人类对其、工具使用等技术对模型性能不断…

VCS基本仿真

这里记录三种仿真方式&#xff1a; 第一种是将verilog文件一个一个敲在终端上进行仿真&#xff1b; 第二种是将多个verilog文件的文件路径整理在一个文件中&#xff0c;然后进行仿真&#xff1b; 第三种是利用makefile文件进行仿真&#xff1b; 以8位加法器为例&#xff1a; …