hbase基本命令与实例
- ddl命令
- 1.创建表
- 2.新增列族
- 3.删除一个列族
- 4. 查看表结构
- 5. 查看表是否存在
- 6.删除表
- 创建表空间并在表空间下建表
- 1.创建表空间
- 2.表空间下建表
- 3.查看表空间下的表
- dml命令
- 1.插入数据
- 2.全表扫描
- 过滤查找filter的使用
- 3. 获取数据
- 4.删除数据
- 5. 统计行数
- 6.添加自增列
- 7.查找限制行数内容
👉注:hbase命令写错可以ctrl+backspace回退删除
ddl命令
1.创建表
// 直接建表 格式
create '表名',{NAME => '列族名1'},{NAME => '列族名2'} ...
// 简写格式
create '表名','列族名1','列族名2'.....
hbase(main):002:0> create 'jzydemo','base'
0 row(s) in 2.2930 seconds
=> Hbase::Table - jzydemo
// 栗子:
create 'jzydemo','base'
2.新增列族
// 为已存在的表新增列族 格式:
alter '表名','新增列族名'
// 栗子:
alter 'jzydemo','external'
3.删除一个列族
// 格式 简写可以省略花括号
alter '表名',{NAME=>'需删除列族名', METHOD=>'delete'}
// 栗子:
alter 'jzydemo',NAME=>'base',METHOD=>'delete'
4. 查看表结构
describe '表名'
栗子:查询1中创建的表jzydemo结构
5. 查看表是否存在
exists '表名'
6.删除表
drop '表名'
删除表之前需要先禁用表disable
,相反使用表是enable
示例:
- disable ‘jzydemo’
- drop ‘mydemo’
创建表空间并在表空间下建表
1.创建表空间
create_namespace '表空间名'
示例:
create_namespace 'jzyspace'
2.表空间下建表
create '表空间名:表名','列族名'
create 'jzyspace:userinfos','base'
create 'jzyspace:score','total'
3.查看表空间下的表
list_namespace_tables '表空间名'
1.插入数据
// 格式:
put '表名','行键','列族名','列值'
put '表名','行键','列族名:列名','列值'
// 栗子:
put 'jzyspace:userinfos','1','base:username','zhangsan'
2.全表扫描
- 查看表所有数据
scan '表名'
- 查看一个列族
scan ‘表名’,{COLUMN=>'列族名'}
- 查看多个列族
scan ‘表名’,{COLUMN=>['列族名1','列族名2']....}
- 查看列族某一个列
scan '表名',{COLUMN=>'列族名:列名'}
- 查看多个列族下多个列
scan '表名',{COLUMN=>['列族名1:列名1','列族名1:列名2','列族名2:列名21','列族名2:列名22']....}
过滤查找filter的使用
列举几个常用的filter:
ColumnPrefixFilter 列前缀包含某字符的查找
PrefixFilter 前缀包含某字符的查找
ValueFilter 包含某值查找
STARTROW 从列族为某值开始往后查找
STOPROW 找到列族为某值结束
示例:
// 查找表中值为23的内容
hbase(main):045:0> scan 'jzyspace:userinfos',FILTER=>"ValueFilter(=,'binary:23')"
ROW COLUMN+CELL
1 column=external:age, timestamp=1593078115280, value=23
1 row(s) in 0.0160 seconds
// 查找表中列名前缀是username,并且值中包含san字段的内容
hbase(main):043:0> scan 'jzyspace:userinfos',FILTER=>"ColumnPrefixFilter('username')AND ValueFilter(=,'substring:san')"
ROW COLUMN+CELL
1 column=base:username, timestamp=1593074706538, value=zhangsan
1 row(s) in 0.0330 seconds
// 从列族为1开头的找到值为23的内容
hbase(main):046:0> scan 'jzyspace:userinfos',STARTROW=>'1',FILTER=>"ValueFilter(=,'binary:23')"
ROW COLUMN+CELL
1 column=external:age, timestamp=1593078115280, value=23
1 row(s) in 0.0090 seconds
3. 获取数据
- 获取一行的数据
get '表名','行键'
- 获取某一行某列族数据
get '表名','行键','列族名'
- 根据多个条件获取数据
get '表名','行键',{条件1=>'',条件2=>''....}
4.删除数据
- 删除某行某列的值
delete '表名','行键','列族名:列名'
- 删除某行数据
deleteall '表名','行键'
5. 统计行数
count '表名'
6.添加自增列
👉🏻注意:重复对同一列添加自增列,会在原有基础上+1
//格式
incr '表名','行键','列族名:列族',步长值
//栗子:
incr 'jzyspace:userinfos','1','base:stuno',1
7.查找限制行数内容
scan '表名',{LIMIT=>行数}
可以与STARTROW结合使用,用来做分页
多加练习✌🏻,熟能生巧,fighting!!!🐱👤