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'
分类:
Hadoop
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)