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结构

cdh hbase 配置文件目录 hbase describe命令_表空间

5. 查看表是否存在

exists '表名'

cdh hbase 配置文件目录 hbase describe命令_表空间_02

6.删除表

drop '表名' 删除表之前需要先禁用表disable,相反使用表是enable 示例:

  1. disable ‘jzydemo’
  2. drop ‘mydemo’

cdh hbase 配置文件目录 hbase describe命令_表名_03

创建表空间并在表空间下建表

1.创建表空间

create_namespace '表空间名'

示例:

create_namespace 'jzyspace'

2.表空间下建表

create '表空间名:表名','列族名'

create 'jzyspace:userinfos','base'
create 'jzyspace:score','total'

3.查看表空间下的表

list_namespace_tables '表空间名'

cdh hbase 配置文件目录 hbase describe命令_表名_04

dml命令

1.插入数据

// 格式:
put '表名','行键','列族名','列值'
put '表名','行键','列族名:列名','列值'

// 栗子:
put 'jzyspace:userinfos','1','base:username','zhangsan'

2.全表扫描

  1. 查看表所有数据 scan '表名'
  2. 查看一个列族 scan ‘表名’,{COLUMN=>'列族名'}
  3. 查看多个列族scan ‘表名’,{COLUMN=>['列族名1','列族名2']....}
  4. 查看列族某一个列scan '表名',{COLUMN=>'列族名:列名'}
  5. 查看多个列族下多个列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. 获取数据

  1. 获取一行的数据 get '表名','行键'
  2. 获取某一行某列族数据 get '表名','行键','列族名'
  3. 根据多个条件获取数据get '表名','行键',{条件1=>'',条件2=>''....}

4.删除数据

  1. 删除某行某列的值delete '表名','行键','列族名:列名'
  2. 删除某行数据 deleteall '表名','行键'

5. 统计行数

count '表名'

6.添加自增列

👉🏻注意:重复对同一列添加自增列,会在原有基础上+1

//格式 
incr '表名','行键','列族名:列族',步长值

//栗子:
incr 'jzyspace:userinfos','1','base:stuno',1

7.查找限制行数内容

scan '表名',{LIMIT=>行数}

可以与STARTROW结合使用,用来做分页



多加练习✌🏻,熟能生巧,fighting!!!🐱👤