数据模型:
- 命名空间:
类似于 DatabBase 概念,有多个表。
HBase两个自带的命名空间:
hbase(内置的表)
default(用户默认使用的命名空间) - region
类似于表的概念,定义时只需声明时列族 - row 行
由行键(一个)和列(多个)组成,数据是按照行键字典顺序存储的。 - column 列
- time stamp 时间戳
- cell 单元格
字节码形式
DDL
namespace
- 创建 create_namespace ‘xx’
- 查看 describe_namespace ‘xx’
- 列出所有命名空间 list_namespace
- 删除 drop_namespace ‘xx’
创建表(没有指明namespace就是在default下创建)
-
create ‘xx:t1’,{NAME=>‘f1’,VERSION=>5}
创建表t1并指明命名空间xx
{NAME} f1指的是列族
VERSION 表示版本数 -
多个列族f1、f2、f3
create ‘t2’,{NAME=>‘f1’},{NAME=>‘f2’},{NAME=>‘f3’} -
多个列族f1、f2、f3
create ‘t3’,‘f1’,‘f2’,‘f3’
删除列族(先禁用)
- disable ‘t1’
alter ‘t1’,NAME=>‘f1’,METHOD=>‘delete’
enable ‘t1’
is_enabled’t1’(查看使用状态) - dec ‘t1’ 查看表结构
删除表(先禁用)
- disable ‘t2’
drop ‘t2’
exists ‘t2’(查看表是否存在)
DML
使用put添加数据
- 表+rowkey+列族:列+values
put ‘stu’,‘2021_926’,‘info:name’,‘haha’
查询数据
- get ‘stu’,‘2021_926’ 查询表中rowkey为的数据
- get ‘stu’,‘2021_926’,‘info’ 查询表中rowkey为,列族为info的数据
- get ‘stu’,‘2021_926’,‘info:name’ 查询表中rowkey为,列族为info,列为name的数据
扫描全表数据
scan ’stu’
扫描筛选信息
scan ‘stu’,{COLUMNS=[‘info:name’,‘info:age’],LIMIT=>10,STARTROW=>‘XXXX’,STOPROW=>‘XXXX’ }
LIMIT:10行数据,查询条数
STARTROW开始行号
STOPROW结束行号
删除数据
delete
delete all删除整行
截断表truncate
清空整张表,保留表结构。
实际本质是先disabled表,删除表,再重建表。