【NoSQL数据库】Hbase基本操作——数据库表的增删改查

embedded/2024/12/3 8:01:56/

目录

一、Hbase原理

二、HBase数据库操作

三、遇到的问题和解决方法


一、Hbase原理

        HBase的数据模型:

行键

时间戳

列族:contents

列族:anchor

列族:mime

“com.cnn.www”

T9

Achor:cnnsi.com=”CNN”

T8

Achor:my.lock.ca=”CNN.com”

T6

Contents:html=”<html>…”

Mime:type=”text/html”

T5

Contents:html=”<html>…”

T3

Contents:html=”<html>…”

        HBase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库。利用HBase技术可在廉价的PC Server上搭建起大规模结构化存储集群。

        HBase是非关系型数据库,它不要求数据之间有严格的关系,同时它允许在同一列不同行中存储不同类型的数据。Hbase作为Hadoop框架下的数据库,是被设计成在一个服务器集群上运行的。

二、HBase数据库操作

示例:在Hbase建立如下表格数据,表格命名为Phone,并对Phone表执行数据查询、修改、删除及表格的删除操作。

行键

info

sale

时间戳

brand

name

price

P001

Apple

Iphone16

8999

202404

P001

Iphone15

202303

P003

HUAWEI

Mate 30 pro

5999

201906

1、在虚拟机终端输入hbase shell进入hbase

2、HBase创建数据库

(1)建立数据库表,使用create ‘表名’, ‘列族名1’,’列族名2’,’列族名N’,具体操作如下所示。

(2)执行命令list查看所有数据库表,下图显示Phone表,说明已经创建成功。

(3)describe ‘Phone’查看Phone表的结构。

(4)count ‘Phone’查看Phone表中的所有记录数量,此时未添加数据,记录为0。

2、增加数据操作

put ‘表名’,’行键’,’列族:列’,’值’,具体操作如下所示。对Phone表所有记录进行添加。

3、查询数据操作

(1)查看表的所有记录,使用 scan ‘表名’,具体操作如下所示。

(2)查看某个行键下的所有记录,使用 get ‘表名’,‘行键’,具体操作如下所示。

(3)查看某个行键下的列族记录,使用get '表名','行键','列族',具体操作如下所示。

(4)查看列族的某个列记录,使用get '表名','行键','列族:列’,具体操作如下所示。

3、更新数据操作

Hbase更新数据即追加数据,对相同行键、列族和列名的数据再次添加即为数据的更新,重写一遍进行覆盖实现更新。Phone表中要把P001的价格从8999更新为9888,具体操作如下所示。

4、删除数据操作

(1)删除某个列族中的列,使用delete‘表名’,‘行名’,‘列族:列',具体操作如下所示。

(2)使用get查询删除是否成功,具体操作如下所示。

(3)删除整行记录,使用deleteall '表名','行键',具体操作如下所示。

(3)清空表所有记录,使用truncate '表名',具体操作如下所示。

5、删除数据表

(1)蔽数据表: disable ‘表名’

(2)查看表是否可用:is_enabled ‘表名’

(3)删除数据表:drop '表名'

具体操作如下所示。

三、遇到的问题和解决方法

我自己操作时遇到的问题和一些解决方法(大家可以在评论区讨论):

1、hbase shell命令回车后报错,提示zookeeper连接出现问题,后来发现是hbase-site.xml文件没有正确配置,正确配置后可以启动zookeeper,正常运行。(这里可以查看我的Hadoop和Hbase的配置文章,里面有说如何配置hbase-site.xml文件)

【Hadoop和Hbase集群配置】3台虚拟机、jdk+hadoop+hbase下载和安装、环境配置和集群测试_虚拟机hbase环境配置-CSDN博客

2、增加数据时,put之后没有报错,可是get和scan查看数据却没有显示内容,说明添加数据出现问题,我试了重新启动hbase服务,也没有解决,后来删除Phone表重新创建,就可以添加数据了。

3、Phone表里有一个时间戳为202303的P001记录,可是在已经添加了Iphone16的数据之后,Iphone15的就put失效,和上面的问题一样,或许是因为202303的记录比202404的记录要旧,被新时间戳的记录覆盖了,所以显示不了。


http://www.ppmy.cn/embedded/142546.html

相关文章

【计算机网络】实验 5:IPV4地址的分类地址及划分子网

实验 5&#xff1a;IPV4地址的分类地址及划分子网 一、 实验目的 加深对IPV4地址的分类地址的了解。 加深对IPV4地址的划分子网的了解。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证分类IP地址的作用以及了解路由器的基本功能 (1) 第一步&…

【论文复现】DETR[端到端目标检测]

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ DETR 概述模型主体框架 演示效果DETR 进行目标检测 核心逻辑使用方式部署方式数据准备参考文献 概述 在目标检测需要许多手工设计的组件&…

Shell脚本小练习

学习了这么长时间Shell脚本&#xff0c;总得来一次小小的练习吧&#xff0c;那么请看下文&#xff01; 1.用Shell写一个小计算器。 通过read命令获取用户输入的表达式&#xff0c;表达式的格式设定为操作数1 运算符 操作数2&#xff0c;例如53&#xff0c;然后利用设计的脚本…

linux查询进程的启动时间

说到查询进程的启动时间&#xff0c;你的第一反应肯定是ps -p $pid -o lstart&#xff0c;但是ps 命令通常会通过访问 proc 文件系统来收集进程的信息&#xff0c;它本身是一个外部命令&#xff0c;执行时需要进行进程管理、格式化输出等额外的操作&#xff0c;这会消耗更多的 …

MATLAB 手写判断点在多边形内外的2种方法(87)

MATLAB 手写判断点在多边形内外-方法1(87) 一、算法介绍二、算法实现1.方法1(代码+测试)2.方法2(代码+测试)三、结果一、算法介绍 手动实现两种方法,判断点在多边形的内部还是外部, 具体实现和测试代码如下,使用前请自行验证。(代码复制粘贴即可使用) 二、算法实现…

设计模式- Java

工厂模式 通过将对象的创建过程封装到一个工厂类中&#xff0c;使得客户端不需要直接使用 new 去创建对象&#xff0c;而是通过调用工厂方法来获取所需的对象。这样可以降低代码耦合度&#xff0c;并方便后续的扩展和维护。 示例代码 简单工厂模式&#xff08;不配合策略模式…

三格电子—单通道串口服务器

型号&#xff1a;SG-TCP232-110 一、产品介绍 1.1 功能简介 SG-TCP232-110 是一款用来进行串口数据和网口数据转换的设备。解决普通 串口设备在 Internet 上的联网问题。 设备的串口部分提供一个 232 接口和一个 485 接口&#xff0c;两个接口内部连接&#xff0c;…

阿里邮箱发送带excel附件邮件

导包 <dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version> </dependency> 内容 调用 EmilUtil.sendEmail("xxxx163.com",host,username,password,port,excelFile,…