用《王者荣耀》游戏玩家信息管理操作教会使用hbase

一、任务描述

主要使用HBase shell的方式实现对王者荣耀游戏玩家信息表的操作,包括表的创建、删除及数据的插入、查询等操作。

二、了解并使用DDL操作创建王者荣耀玩家信息表

HBase Shell常用DDL(数据定义语言)命令

HBase Shell命令功能描述
list列出HBase中的所有表
create创建一张表
describe列出表的详细信息
alter修改表的列族
disable禁用表,使表无效
enable启用表,使表有效
drop删除表
exists判断表是否存在

2.1下面我们创建王者荣耀玩家信息表

hbase(main):003:0> create 'gamer',{NAME => 'personalInfo',VERSIONS => 1},{NAME => 'recordInfo',VERSIONS =>1},{NAME =>'assetsInfo',VERSIONS=>1}
0 row(s) in 1.3930 seconds

=> Hbase::Table - gamer
hbase(main):004:0> list
TABLE
gamer
1 row(s) in 0.0150 seconds

=> ["gamer"]

注意:其中列族名称必须用单引号括起来,即NAME后的部分,如果有多个列族,应该以逗号分隔,每个列族单独用{}括起来。指定列族参数的格式为参数名=>参数值"=>"是赋值符号,参数名必须大写!
同时,创建gamer表的代码可以进行简化:

create 'gamer','personalInfo','recordInfo','assetsInfo'

2.2查看表的详细信息

 describe 'gamer'

出现Table gamer is ENABLED即可,在结果里可以查看表中的 列族信息,下面我们用一张表格来介绍一下列族描述信息含义。

列族描述可选值含义
NAME可打印的字符串列族名称,参考ASCII码
BLOOMFILTERNONE((默认)|ROWCOL|ROW提高随机读的性能
VERSION数字列族中单元时间版本最大数量
IN_MEMORYtrue|false(默认)使得列族在缓存中拥有更高优先级
KEEP_DELETED_CELLSTRUE|FALSE(默认)启用后可以避免被标记为删除的单元从HBase中删除
DATA_BLOCK_ENCODINGNONE(默认)数据库编码
TTL默认FOREVER单元时间版本超时时间,可指定多长时间(秒)后失效
COMPRESSIONNONE(默认)|LZO|SNAPPY|GZIP压缩算法
MIN_VERSIONS数字列族中单元时间版本最小数量
BLOCKCACHEtrue|false,默认true是否将数据放入读缓存
BLOCKSIZE默认65536字节数据块大小,数据块越小,索引越大
REPLICATION_SCOPE默认0开启复制功能

2.3修改表的列族信息
alter命令可以为表增加或修改列族
示例:将gamer表中的personalInfo列族的TTL(用于限定数据的超时时间)信息设置为180天(15552000秒)

alter 'gamer',{NAME=>'recordInfo',TTL=>'15552000'}

再查看表的信息后会发现TTL已经设置成15552000秒

2.4删除表
使用drop命令进行删除操作。当表为enabled时会被禁止删除,只有当我们将表设置为disabled状态时才可以删除

disable 'gamer'

禁用完后,可以使用is_disabled命令查看是否被禁用,true标识则表示已经被禁用
使用enable命令重新启用表
删除表

drop 'gamer'

查看表是否已经存在

exists 'gamer'

三、了解并使用DML操作王者荣耀玩家信息表

我们先来了解一下HBase Shell中的常用DML命令

HBase Shell命令功能描述
put向指定的单元添加值
scan通过扫描表来获取数据
get通过行或者单元的值
count统计表中行的数量,一个行键为一行
delete删除指定对象的值
deleteall删除整行
truncate清空表的数据

3.1添加数据
使用put命令向表中添加数据
命令:
put

,, family:qualifier,,
示例:向王者荣耀游戏玩家信息表gamer中添加数据

put 'gamer','row-0001','personalInfo:nickname','QGhappy.junjie'

示例演示的是给gamer表行键(Row Key)为row-0001的personalInfo列族中添加了列nickname,单元值为QGhappy.junjie,下面我们写一下完整代码

 put 'gamer','row-0001','personalInfo:nickname','QGhappy.junjie'
 put 'gamer','row-0001','recordInfo:ranking','one'
 put 'gamer','row-0001','assetsInfo:integral','王者500星'
 put 'gamer','row-0001','personalInfo:gameId','01'

注意:同一个列族中可以添加多个列

 put 'gamer','row-0002','personalInfo:nickname','XQMaster'
 put 'gamer','row-0002','recordInfo:ranking','two'
 put 'gamer','row-0002','assetsInfo:integral','王者499星'
 put 'gamer','row-0002','personalInfo:gameId','02'

3.2查询数据
命令
scan

,{COLUMNS=>[ family:qualifier,…],LIMIT=>num}
其中,大括号的内容为扫描条件,如果不指定就查询所有数据
示例:扫描gamer表中的数据

scan 'gamer'

扫描列族数据

scan 'gamer',{COLUMNS=>'personalInfo'}

扫描列键数据

scan 'gamer',{COLUMNS=>['personalInfo:nickname']}

3.3get获取数据
get命令用于获取行的所有单元或者指定的单元
命令
get ‘表名称’,‘行键’,{COLUMNS=>[‘列祖名1’,‘列族名2’,…],参数名=>参数值…}
get ‘表名称’,‘行键’,{COLUMN=>[‘列键1’,‘列键2’,…],参数名=>参数值…}
get查找的目标是某行的某个列族、列键
scan查找的目标是全表的某个列族、列键
示例:查找行键为row-0001的所有单元

get 'gamer','row-0001'

查找行键‘rw-0001’,列键为‘personalInfo:nickname’的单元

get 'gamer','row-0001',{COLUMN=>'personalInfo:nickname'}

查找行键为‘rw-0001’,列族为‘personalInfo’的单元

get 'gamer','row-0001',{COLUMNS=>'personalInfo'}

3.4删除数据
1.使用delete命令删除数据库中的一个单元
命令
delete‘表名称‘,’行键‘,’列键’
删除表中行键为“row-0001”,列族为personalInfo的所有单元

delete 'gamer','row-0001','personalInfo'

删除完毕后,使用get命令查看是否已经删除成功
2.使用deleteall命令删除一行
删除行键为row-0001的一行数据

deleteall 'gamer','row-0001'

再通过get命令查看是否已经删除成功

3.5清空表中数据
使用truncate命令可以删除表中的所有数据
命令:
truncate ‘表名称’
清空gamer表中的所有数据:

truncate 'gamer'

再使用scan命令验证删除清空数据是否成功

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值