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

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

目录

一、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.kler.cn/a/419610.html

相关文章:

  • 网络安全:攻击和防御练习(全战课), DDos压力测试
  • C++分治思想
  • 【时时三省】tessy 新建工程 复用 旧工程用例
  • 各类 AI API获取方法,GPT | Claude | Midjourney等
  • 【赵渝强老师】PostgreSQL的段、区和块
  • Flink常见面试题
  • AcWing 3683:长方形中的正方形 ← 复旦大学考研机试题
  • 【Vue3】App.vue
  • 基于SpringBoot的汽车销售网站
  • 从Prometheus更换为VictoriaMetrics
  • 深入探讨NIO
  • 架构的学习
  • Verilog的线与类型与实例化模块
  • 成都睿明智科技有限公司抖音电商服务的新引擎
  • ubuntu的用户使用
  • 十进制左移右移以及IO输出处理记录
  • 基于Java Springboot房屋出售租赁系统
  • torch_geometric使用手册-Creating Graph Datasets(专题四)
  • 《C++ Primer Plus》学习笔记|第1章 预备知识 (24-12-2更新)
  • Python的学习路线
  • opensatck-海光C86芯片的计算节点直通英伟达T4 GPU加速卡的操作记录
  • Vue单页面应用和多页面应用
  • Python3 多线程使用concurrent.futures
  • tomcat 8在idea启动控制台乱码
  • 四元数Quaternion的概念以及应用领域和处理方法
  • 无法通过windows功能控制面板自动安装或卸载windows server角色和功能