一、任务描述
主要使用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码 |
| BLOOMFILTER | NONE((默认)|ROWCOL|ROW | 提高随机读的性能 |
| VERSION | 数字 | 列族中单元时间版本最大数量 |
| IN_MEMORY | true|false(默认) | 使得列族在缓存中拥有更高优先级 |
| KEEP_DELETED_CELLS | TRUE|FALSE(默认) | 启用后可以避免被标记为删除的单元从HBase中删除 |
| DATA_BLOCK_ENCODING | NONE(默认) | 数据库编码 |
| TTL | 默认FOREVER | 单元时间版本超时时间,可指定多长时间(秒)后失效 |
| COMPRESSION | NONE(默认)|LZO|SNAPPY|GZIP | 压缩算法 |
| MIN_VERSIONS | 数字 | 列族中单元时间版本最小数量 |
| BLOCKCACHE | true|false,默认true | 是否将数据放入读缓存 |
| BLOCKSIZE | 默认65536字节 | 数据块大小,数据块越小,索引越大 |
| REPLICATION_SCOPE | 默认0 | 开启复制功能 |
2.3修改表的列族信息
alter命令可以为表增加或修改列族
示例:将gamer表中的personalInfo列族的TTL(用于限定数据的超时时间)信息设置为180天(秒)
讯享网alter 'gamer',{
NAME=>'recordInfo',TTL=>''}
再查看表的信息后会发现TTL已经设置成秒
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
示例:向王者荣耀游戏玩家信息表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
其中,大括号的内容为扫描条件,如果不指定就查询所有数据
示例:扫描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命令验证删除清空数据是否成功

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/54784.html