Hbase shell命令

Hbase shell命令

1.基础概念

(1)表( table ):HBase采用表来组织数据;

(2)行( row ):每个表都由行组成,每个行由行键( row key )来标识,行键可以是任意字符串;

(3)列族( column family ):一个table有许多个列族,列族是列的集合,属于表结构,也是表的基

本访问控制单元;

(4)列标识(column qualifier):属于某一个Column Family:Column Qualifier形式标识,每条记录

可动态添加

(5)时间戳( timestamp ):时间戳用来区分数据的不同版本;

(6)单元格( cell ):在table中,通过行、列族、列、时间戳来确定一个cell,cell中存储的数据没有

数据类型,是字节数组byte[]

2.DDL操作

命名空间namespace指的是一个表的逻辑分组,同一组中的表有类似的用途,限制一个namespace可以使用的资源,资源包括region和table等

2.1创建命名空间

create_namespace 'bigdata'

2.2查看命名空间

list_namespace 

2.3查表

查看所有表

list

2.4 创建表

hbase中使用create来创建表

语法:

create 'tl' 'columnfamily'
create 'ns1:tl' 'columnfamily'

列子:

#在bigdata命名空间下创建表Student,列族有Info
create 'bigdata:Student','Info'

#创建一个Student表,有2个列族,Info,Grades
create 'Student','Info','Grades'

#创建表,并生成一个列族info,指定其版本号为5,开启BLOCKCACHE
create 'Student', { NAME=>’info’, VERSION=>5, BLOCKCACHE=>true}

#创建表,设置表的hregion FILESIZE最大字节数
create‘Student’,‘StuInfo’,‘Grades’,MAX_FILESIZE=>‘134217718’

2.5查看表

语法:

describe 'tableName'

列子:

#查看刚刚创建的Student表
describe 'Student'

2.6改表

语法:

alter 'tableName',{修改信息}
alter 'tableName','delete'=>'删除列族名'
alter 'tableName','添加列族名'

例子:

#修改Info列族保留版本数
alter 'Student',{NAME=>'Info',VERSIONS=>3}
#删除列族Grade
alter 'Student','delete'=>'Grade'
#增加一个列族hobby
alter 'Student','hobby'

2.7删表

要删除一个表,要先解禁一个表,解禁表使用disable命令,

disable 'Student'
drop 'Student'

3.DML

3.1增

语法:

put 'ns1:t1' 'r1' 'c1', 'value','timestamp'
...

例子:

#表Stuent,行键1001,列族Info中的name列,存放值'zhangsan',timestamp默认使用系统的
put 'Stuent' '1001','Info:name','zhangsan'

#在最后写指定的时间戳
put 'Stuent' '1001','Info:name','zhangsan',1

#列族中的列是动态扩展的,无需定义列
put 'Stuent' '1001','Info:sex','nan'

3.2更新

hbase有时间戳,当数据进行更新的时候,执行的是非覆盖型更新,也就是说旧的数据会保留下来,而非被新数据完全覆盖掉,而查询的时候会默认优先查最新版本的 ,除非指定版本,一般的查询都是返回最新的数据。

语法:

put 'ns1:t1' 'r1' 'c1', 'value','timestamp'
...

例子:

#后一个数据拥有最新时间戳,所以查询时,如果不指定,默认返回拥有最新时间戳的信息
put 'Stuent' '1001','Info:name','zhangsan'
put 'Stuent' '1001','Info:name','zhangsan2'
#get 'Stuent' '1001','Info:name' 会返回'zhangsan2'

#hbase会将三个版本的Info:name都保存下来,默认只查最新的'zhangsan3'
#这样从而实现类似于改的操作
put 'Stuent' '1001','Info:name','zhangsan'
put 'Stuent' '1001','Info:name','zhangsan2'
put 'Stuent' '1001','Info:name','zhangsan3'

3.3查

语法:

scan 'ns1:t1',{条件}
#get能指定到单元,row,列族,列
get 't1','r1','c1',{条件}
get 't1','r1',{条件}
...

例子:

#查看整个Student表(默认放回最新版本号的数据)
scan 'Student'

#指定查询范围(扫描1001行到1003,不包含1003)
scan 'Student',{ STARTROW=>'1001', STOPROW=>'1003'}

#查询所有数据(三个版本内的)
scan 'Student',{ RAW=>true,VERSIONS=>3}

#查看表Student的1001行(默认放回的信息都是最新版本号的)
get 'Student','1001'

#查看表Student的1001行,列族为Grade的信息
get 'Student','1001', 'Grade'
get 'Student','1001', { COLUMN=>Grade}

#查看Student的1001行,列族Info中的name的数据
get 'Student','1001','Info:name'

#获取俩个版本内的
get 'Student','0001','stuInfo',{ VERSIONS=>2}

3.4删

语法:

delete 't1','r1','c1'
delete 't1','r1','c1',ts1
delete 't1','r1','c1',ts1,{条件}
...
deleteall 't1','r1'
truncate 't1'

例子:

#删除1001的Name(最新版本的信息将被打上删除标记)
#旧版本依旧存在, get 'Student','1001',{RAW=>true,VERSIONS=>3}
delete 'Stuent','1001','Info:Name'

#删除1001行
deleteall 'Stuent','1001'

#删除整个表数据(完成禁用、删除,按原结构重新建立表结构的过程)
truncate 'Student'
posted @   鸭梨的药丸哥  阅读(51)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示