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

目录

一、Hbase原理

二、HBase数据库操作

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


一、Hbase原理

HBase的数据模型:

|---------------|-----|-----------------------------|----------------------------|-----------------------|
| 行键 | 时间戳 | 列族:contents | 列族:anchor | 列族:mime |
| "com.cnn.www" | T9 | | Achor:cnnsi.com="CNN" | |
| "com.cnn.www" | T8 | | Achor:my.lock.ca="CNN.com" | |
| "com.cnn.www" | T6 | Contents:html="<html>..." | | Mime:type="text/html" |
| "com.cnn.www" | T5 | Contents:html="<html>..." | | |
| "com.cnn.www" | 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的记录要旧,被新时间戳的记录覆盖了,所以显示不了。

相关推荐
倔强的石头_2 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab2 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence3 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
得物技术3 天前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子3 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
无响应de神3 天前
三、用户与权限管理
数据库·mysql
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
大志哥1233 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
果丁智能3 天前
物联网智能锁赋能集中式住宿:身份核验与远程权限管控的全链路技术实践
大数据·人工智能·物联网·智能家居
麦聪聊数据3 天前
数据服务化时代:企业数据能力输出的核心路径
数据库