Hbase的基本操作(CURD)
Hbase
仅供参考学习
一、Hbase是什么?
Hbase是一个分布式的
、面向列
的开源数据库,且Hbase不同于一般的关系数据库,它是一个适用于非结构化数据
存储的数据库,且是基于列
的模式。它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务
表的基本结构
二、与传统数据库的差异
MySQL、Oracle | Hbase |
---|---|
行储存 | 列储存 |
适用于OLTP业务 | 平衡了OLTP和OLAP |
强一致性 | 强一致性 |
支持二级索引 | 不支持二级索引 |
支持全文索引 | 不支持全文索引 |
强一致性
:例如MySQL的全同步复制模式,在该模式下用户与MySQL交互,主库和备库同binlog时,主库只有在收到备库的成功响应之后,才能够向客户端反馈提交成功。因此在用户获得响应时,主库和备库的数据副本已经达到了一致,所以后续的读操作肯定不会出现问题,这种模式称为强一致性。
但是该模式具有很严重的弊端:
性能差: 主库必须等到所有备库均返回成功后,才能向用户反馈提交成功。
可用性降低: 在全同步复制模式下,集群中的节点被串联在一起,集群整体的可用性就降低了,且集群越大可用性问题越严重。
正因为这两个问题,实现强一致性需要的代价太大,所以大部分产品选择弱一致性
二级索引
:叶子节点中存储主键值,每次查找数据时,根据索引找到叶子节点中的主键值,根据主键值再到聚簇索引中得到完整的一行记录。全文索引
:通过关键字的匹配来进行查询过滤,基于相似度的查询
OLTP和OLAP
三、基本操作
1.表操作
1.1 创建表
hbase> create ‘tablename’,‘column_family01’,‘column_family02’
create 'student','info','grade'
tablename: 表名
column_family01,column_family02:列族名
注意:
不用创建列,列名是后期插入数据时才定义的
1.2 删除表
表创建成功后,默认状态是enable,即“使用中”的状态,删除表之前需先设置表为“关闭中”。
disable 'student'
再使用关键字drop删除表
drop 'student'
1.3 增加列族
hbase> alter ‘tablename’,‘column_famaily03’
alter 'student','sci'
1.4 删除列族名
hbase> alter ‘ table_name ’, ‘delete’ => ‘ column family ’
hbase> alter 'table_name ',{NAME=>‘column family’,METHOD=>‘delete’}
alter 'student','delete'=>'sci'
alter 'student',{NAME=>'grade',METHOD=>'delete'}
1.5查看表结构
hbase> describe ‘table_name’
describe 'student'
2.对数据的操作
2.1插入(更新)数据
put ‘table_name’,‘row_key1’,‘column_family:column’,‘value’
注:
row_key: 行键
column: 列名
只能一列一列的加,并不能一次性插入多条列数据(当插入的列已经有数据时就会覆盖原有值)
put 'student','student_01','grade:math','20'
put 'student','student_01','grade:english','96'
put 'student','student_01','info:name','Jack'
put 'student','student_01','info:class','1101'
2.2 查看数据(get|scan)
get ‘table_name’ ,‘row_key’
scan ‘table_name’
get: 只查看某个行键的数据
scan:查看表的所有数据
get 'student','student_01'
scan 'student'
2.3 删除一条行数据中的列值
hbase> deleteall ‘table_name’,‘row_key’,‘column_family:column’
hbase>delete ‘table_name’,‘row_key’,‘column_family:column’
deleteall'student','student_01','info:class'
2.4 删除行数据(delete|deleteall)
deleteall ‘table_name’,‘row_key’
deleteall:删除具体到哪一行中的某个列族下的某一列数据文章来源:https://www.toymoban.com/news/detail-400442.html
deleteall 'student','student_01'
文章多处借鉴,代码亲测,若有侵权,还忘告知:
文章来源地址https://www.toymoban.com/news/detail-400442.html
到了这里,关于Hbase的基本操作(CURD)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!