【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的记录要旧,被新时间戳的记录覆盖了,所以显示不了。

相关推荐
q***816418 小时前
MySQL:数据查询-limit
数据库·mysql
p***924818 小时前
DBeaver连接本地MySQL、创建数据库表的基础操作
数据库·mysql
2501_9416233219 小时前
人工智能赋能智慧农业互联网应用:智能种植、农业数据分析与产量优化实践探索》
大数据·人工智能
JIngJaneIL19 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·社区互助
晚风吹人醒.20 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
YangYang9YangYan20 小时前
网络安全专业职业能力认证发展路径指南
大数据·人工智能·安全·web安全
Y***985120 小时前
DVWA靶场通关——SQL Injection篇
数据库·sql
Yawesh_best20 小时前
告别系统壁垒!WSL+cpolar 让跨平台开发效率翻倍
运维·服务器·数据库·笔记·web安全
蒋士峰DBA修行之路20 小时前
实验二十八 SQL PATCH调优
数据库·sql·gaussdb
I***t71621 小时前
一条sql 在MySQL中是如何执行的
数据库·sql·mysql