栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HBase概念与常用命令

HBase概念与常用命令

1、Hbase定义

由谷歌的BigTable发展而来,是NoSQL数据库。

2、Hbase逻辑结构

数据存储在一张表中,有行有列,但底层无力存储结构(K-V)看,Hbase更像一个multi-dimensional map


1)Name Space
命名空间,每个命名空间下有多个表,Hbase有两个自带的命名空间:hbase、default,
hbase存放的是Hbase内置的表,default表是用户默认使用的命名空间

2)Region
类似关系型数据库的表的概念。Hbase定义表时只需要申明列族即可,无需申明具体的列,所以写入数据时,字段可以动态、按需指定。

3)Row
每行数据都由一个RowKey和多个列组成,数据按照RowKey的字典顺序存储,且查询数据时只能根据RowKey进行检索。

4)Column
每个列由ColumnFamily(列族)和ColumnQualifier(列限定符)进行限定,建表时只需指名列族,列限定符无需预先定义。

5)Time Stamp
用于标识数据的不同版本(version),如果不指定时间戳,系统会自动为其加上该字段,其值为写入Hbase的时间。

6)Cell
由{rowkey,column family:column qualifier,time stamp} 唯一确定的单元,cell中的数据没有类型,都是字节码形式存储。

操作数据:DML;操作表:DDL;

3、Hbase Shell 操作 1)基本操作

1、 进入Hbase客户端命令行
hbase shell
quit 退出

2、 查看帮助命令
help ‘命令名’

3、 查看数据库中有哪些表
list

2)表的操作DDL

1、创建表
create ‘student’ , ‘info’ //前者为表名,后者为列族,列族可多个、至少一个
create ‘表名’, {NAME => ‘列族名1’, VERSIONS => 版本号, TTL => 过期时间, BLOCKCACHE => true}

2、描述表
describe ‘student’

COLUMN FAMILIES DEscriptION
{NAME => ‘info1’, DATA_BLOCK_ENCODING => ‘NONE’, BLOOMFILTER => ‘ROW’, REPLICATION_SCOPE => ‘0’, VERSIONS => ‘1’, COMPRESSION => ‘NONE’, MIN_VERSIONS => ‘0’, TTL => ‘FOREVER’, KE
EP_DELETED_CELLS => ‘FALSE’, BLOCKSIZE => ‘65536’, IN_MEMORY => ‘false’, BLOCKCACHE => ‘true’}
{NAME => ‘info2’, DATA_BLOCK_ENCODING => ‘NONE’, BLOOMFILTER => ‘ROW’, REPLICATION_SCOPE => ‘0’, VERSIONS => ‘1’, COMPRESSION => ‘NONE’, MIN_VERSIONS => ‘0’, TTL => ‘FOREVER’, KE
EP_DELETED_CELLS => ‘FALSE’, BLOCKSIZE => ‘65536’, IN_MEMORY => ‘false’, BLOCKCACHE => ‘true’}
2 row(s) in 0.0790 seconds

3、改变表
alter ‘student’ ,{NAME=>‘info’, VERSIONS=>3} //VERSIONS为3说明将info列族的数据存放3个版本
alter ‘student’ ,‘info2’ //增加列族
alter ‘student’ ,{NAME=>‘info2’, METHOD=>‘delete’}

4、删除表
disable ‘student’ 先令表下线,上线为enable
drop ‘student’ 再删除表,不然报错删不掉

5、展示命名空间
list_namespace

6、创建命名空间
create_namespace ‘bigdata’

7、在别打命名空间创建表
create “bigdata:student”,“info”
在表的前面加上 命名空间名:,不加为默认default命名空间

8、删除命名空间
drop_namespace ‘bigdata’
注意:命名空间内要没有表了才能删

9、判断表是否存在
exists ‘user’

3)数据的操作DML

1、插入数据
put ‘student’, ‘1001’, ‘info:name’, ‘zhangsan’
student:表名,1001:row key,info:name:族列:列名,zhangsan:要插入的值。

2、查询数据
scan ‘student’ //全表扫描,表中数据按照keyrow的字典序升序排列
scan ‘student’, {STARTROW=>‘1001’, STOPROW=>‘1003’} //指定rowkey的扫描,[1001,1003),也可只写一边
get ‘student’, ‘1001’ //返回row key = 1001的所有列族:列的信息,get至少要2个参数
get ‘student’, ''1001, ‘info1’ //返回1001的info1的所有值
get ‘student’, ‘1001’, ‘info1:name’ //返回1001的info1:name的值

count ‘student’ //查询记录数

3、更改数据
put ‘student’, ‘1001’, ‘info:name’, ‘zhangsan2’
注意:此时原来的值zhangsan还未被删除,可用
scan ‘student’, {RAW=>true, VERSIONS=>10} 来查看10个版本以内的所有值,但正常返回时zhangsan不会返回给用户。
也可指定时间戳,会返回用于时间戳最大的那条信息。

4、删除数据
delete ‘student’, ‘1001’, ‘info1:name’ //至少3个参数
delete之后,时间戳最大的type=DeleteColumn, 不会被返回,旧的时间戳到值也不会被返回。

deleteall ‘student’, ‘1001’ //删除整一行

truncate ‘student’ //清空表

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/707777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号