HBase-2 HBase基本操作之shell

HBase的shell基本操作

  • HBase Shell命令基本操作
    • 进入Hbase的shell客户端
    • help命令
    • list 查看当前数据库有哪些表
    • create 创建表
    • put 插入数据
    • 查询数据操作
      • 通过rowkey进行查询
      • 查看rowkey下某个列族的信息
      • 查看rowkey指定列族指定列的值
      • 查看rowkey指定多个列族的值
      • 指定rowkey与列值过滤器查询
      • 指定rowkey与列名模糊查询
      • 查询某表所有行的数据
      • 列族查询
      • 多列族查询
      • 指定列族与某个列名查询
      • 指定多个列族与按照数据值模糊查询
      • 指定rowkey的范围查询
      • 指定rowkey模糊查询
      • 指定数据版本的范围查询
    • 更新数据库操作
      • 更新数据值
      • 更新版本号
    • 删除数据以及删除表操作
      • 指定rowkey以及列名进行删除
      • 指定rowkey,列名以及版本号进行删除
      • 删除一个列族
      • 清空表数据
      • 删除表
    • 统计一张表有多少行数据
  • HBase shell管理命令
    • 显示服务器状态
    • 显示当前用户
    • 显示当前所有表
    • 查询指定表的记录数
    • 显示表的结构信息
    • 显示表是否存在
    • 显示表是否启用\禁用
    • 启用、禁用表
    • 删除表
    • 清空表
    • 更改表的列族

HBase Shell命令基本操作

shell客户端删除光标前面的字符:Ctrl+删除键,很麻烦。最好在外面写好之后粘贴过去

进入Hbase的shell客户端

# 在hbase/bin下
hbase shell

help命令

# 从Help中可以的看到hbase command包含的种类
help

HBase-2 HBase基本操作之shell_第1张图片
HBase-2 HBase基本操作之shell_第2张图片

  • 查看某个命令详解:
    HBase-2 HBase基本操作之shell_第3张图片

list 查看当前数据库有哪些表

create 创建表

  • 创健表需要指定至少1个列族,官网建议列族数为1-3
  • HBase0.96前默认版本是3,HBase0.96之后默认版本是1
  • NAMEVERSIONS大小写敏感,小写会报错
# 创建user表,包含两个列族:info data
createuser,'info','data'
# 创健user表,包含两个列族:info,data。 info 版本数为3,data版本数为2
# 大于3的版本,会被打上墓碑标记,在flush的时候删除
create 'user' ,{NAME=>'info',VERSIONS => '3'},{NAME=>'data',VERSIONS=>'2'}

put 插入数据

  • put只能插入一条数据。需要批量插入可以使用Java API循环插入
  • 插入数据需要制定,列族列名。形式为列族:列名
  • 列族+列名+rowkey可以确定唯一cell,列族+列名+rowkey+version可以确定cell中某一版本的值
# 像user表的info列族中插入信息,rowkey为rk0001,添加列:name,值为zhangsan
put 'user','rk0001','info:name','zhangsan'
# 向user表中插入信息,row key为rk0001,列族info中添加名为gender的列,值为female
HBase(main):012:0> put 'user', 'rk0001', 'info:gender', 'female'

# 向user表中插入信息,row key为rk0001,列族info中添加名为age的列,值为20
HBase(main):013:0> put 'user', 'rk0001', 'info:age', 20

# 向user表中插入信息,row key为rk0001,列族data中添加名为pic的列,值为picture
HBase(main):014:0> put 'user', 'rk0001', 'data:pic', 'picture'

查询数据操作

查看某些字段的语法固定,通过不同的组合,即可查询到指定条件的值,查询的中文字段显示的是十六进制。
在这里插入图片描述

通过rowkey进行查询

get 'user' 'rk0001'

HBase-2 HBase基本操作之shell_第4张图片

查看rowkey下某个列族的信息

 get 'user', 'rk0001', 'info'

在这里插入图片描述

查看rowkey指定列族指定列的值

get 'user' ,'rk0001', 'info:name','info:age'
get 'user', 'rk0001', 'info:name', 'data:pic'

在这里插入图片描述

查看rowkey指定多个列族的值

# 两种写法效果一致,前者简洁,后者查询意义更直观
get 'user', 'rk0001', 'info', 'data'
get 'user', 'rk0001', {COLUMN => ['info', 'data']}

HBase-2 HBase基本操作之shell_第5张图片

指定rowkey与列值过滤器查询

  • FILTER 为固定字段,不能更改
  • ValueFilter和下面的QualifierFilter分别为列值过滤器和列名过滤器
    更多过滤器相关可以参考HBase过滤器
# 获取user表中row key为rk0001,cell的值为zhangsan的信息r
get 'user', 'rk0001', {FILTER => "ValueFilter(=, 'binary:zhangsan')"}

在这里插入图片描述

指定rowkey与列名模糊查询

# 获取user表中row key为rk0001,列标示符中含有a的信息
get 'user', 'rk0001', {FILTER => "QualifierFilter(=,'substring:a')"}

在这里插入图片描述
范围查询使用scan关键字

查询某表所有行的数据

scan 'user'

在这里插入图片描述

列族查询

  • 此处 COLUMNS不可以省略
  • 某些列的值执行删除操作后,不会在物理上进行删除,而是打上墓碑标记
    • 想显示被打上墓碑标记的值,使用RAW =>true
    • RAW默认值是false,不想显示被打上墓碑标记的值,不写此字段即可
scan 'user', {COLUMNS => 'info'}
scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}
scan 'user', {COLUMNS => 'info', RAW => true}
scan 'user', {COLUMNS => 'info'}

HBase-2 HBase基本操作之shell_第6张图片

多列族查询

scan 'user', {COLUMNS => ['info', 'data']}

在这里插入图片描述

指定列族与某个列名查询

# 查询user表中列族为info、列标示符为name的信息
scan 'user', {COLUMNS => 'info:name'}
# 查询info:name列、data:pic列的数据
scan 'user', {COLUMNS => ['info:name', 'data:pic']}
# 查询user表中列族为info、列标示符为name的信息,并且版本最新的5个
scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}

HBase-2 HBase基本操作之shell_第7张图片

指定多个列族与按照数据值模糊查询

scan 'user', {COLUMNS => ['info', 'data'], 
FILTER => "(QualifierFilter(=,'substring:a'))"}   

在这里插入图片描述

指定rowkey的范围查询

  • 指定rowkey的范围查询是左闭右开区
查询user表中列族为info,rk范围是[rk0001, rk0002)的数据
scan 'user', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0002'}

在这里插入图片描述

指定rowkey模糊查询

# 查询user表中row key以rk字符开头的数据
scan 'user',{FILTER=>"PrefixFilter('rk')"}

指定数据版本的范围查询

# 查询user表中指定范围的数据(前闭后开)
scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}

更新数据库操作

更新数据值

  • 更新数据和插入数据操作一样,使用put。有数据执行更新,没数据执行插入
在这里插入代码片

更新版本号

 alter 'user', NAME => 'info', VERSIONS => 5

删除数据以及删除表操作

删除的数据在上还存在,只是被打上墓碑标记。等待特定时机从物理上删除。

指定rowkey以及列名进行删除

# 实际上就是删除某个cell
delete 'user', 'rk0001', 'info:name'

指定rowkey,列名以及版本号进行删除

#实际上就是删除指定cell的某个版本的值
delete 'user', 'rk0001', 'info:name', 1392383705316

删除一个列族

alter 'user', NAME => 'info', METHOD => 'delete' 
# 或
alter 'user', 'delete' => 'info'

清空表数据

truncate 'user'

删除表

  • 删除表前,要先置表为disable状态
disable 'user'
  • 然后使用drop删除表
drop 'user'

统计一张表有多少行数据

count 'user'

HBase shell管理命令

显示服务器状态

status 'hbaseServerName'

在这里插入图片描述

显示当前用户

whoami

在这里插入图片描述

显示当前所有表

list

HBase-2 HBase基本操作之shell_第8张图片

查询指定表的记录数

count 'user'

显示表的结构信息

describe 'user'

HBase-2 HBase基本操作之shell_第9张图片

显示表是否存在

exists 'user'

HBase-2 HBase基本操作之shell_第10张图片

显示表是否启用\禁用

is_enabled 'user'
is_disabled 'user'

HBase-2 HBase基本操作之shell_第11张图片

启用、禁用表

enable 'user'
disable 'user'

删除表

  • 删除表前要先disable表
drop 'user'

清空表

truncate 'user'

更改表的列族

  • 为当前表增加列族
alter 'user',NAME => 'TESTCF',VERSIONS =>2
  • 删除当前表某个列族
alter 'user', 'delete' => 'CF2'

HBase-2 HBase基本操作之shell_第12张图片

你可能感兴趣的:(HBase)