HBase Shell里表操作实战
文章目录
- 1. 实战概述
- 2. 实战步骤
- 2.1 创建表
- 2.1.1 创建学生表
- 2.1.2 创建教师表
- 2.2 显示全部表名
- 2.3 显示表结构
- 2.4 写入数据
- 2.5 扫描全表
- 2.6 查询数据
- 2.6.1 按行键查询
- 2.6.2 按行键与列族查询
- 2.6.3 按行键与列查询
- 2.7 修改数据
- 2.8 删除数据
- 2.8.1 删除单元格数据
- 2.8.2 删除记录行数据
- 2.9 删除学生表表
- 3. 实战总结
1. 实战概述
- 本实战基于 HBase 2.6.3(运行于 JDK 17),完整演示了从启动集群、创建表、写入与查询数据,到修改、删除及最终删除表的全流程操作,涵盖了 HBase Shell 的核心命令,验证了 HBase 作为分布式列式数据库的基本功能与使用方法。
2. 实战步骤
- 启动ZooKeeper和HDFS之后,执行命令:
start-hbase.sh

- 执行命令:
hbase shell,进入HBase交互式环境

2.1 创建表
2.1.1 创建学生表
- 执行命令:
create 'student','info','score','hobby'

2.1.2 创建教师表
- 执行命令:
create 'teacher','info','salary','hobby'

2.2 显示全部表名
- 执行命令:
list,列表显示当前数据库里全部表名

2.3 显示表结构
- 执行命令:
describe 'student',显示表结构

2.4 写入数据
-
格式:
put 表名, 行键, 列族:列, 值 -
添加student表行键为
20210101的数据put 'student', '20210101', 'info:name', 'Mike' put 'student', '20210101', 'info:gender', 'male' put 'student', '20210101', 'info:age', '19' put 'student', '20210101', 'score:chinese', '89' put 'student', '20210101', 'score:math', '90' put 'student', '20210101', 'score:english', '78' put 'student', '20210101', 'hobby:flower', 'lotus' put 'student', '20210101', 'hobby:book', 'Big Data'
-
添加student表行键为
20210102的数据put 'student', '20210102', 'info:name', 'Lisa' put 'student', '20210102', 'info:gender', 'female' put 'student', '20210102', 'info:age', '19' put 'student', '20210102', 'score:chinese', '78' put 'student', '20210102', 'score:math', '98' put 'student', '20210102', 'score:english', '58' put 'student', '20210102', 'hobby:flower', 'peony' put 'student', '20210102', 'hobby:book', 'Human History'
-
添加student表行键为
20210103的数据put 'student', '20210103', 'info:name', 'Smith' put 'student', '20210103', 'info:gender', 'male' put 'student', '20210103', 'score:math', '97' put 'student', '20210103', 'hobby:flower', 'rose'
2.5 扫描全表
-
执行
scan '表名',显示指定表全部记录信息 -
执行命令:
scan 'student'(单元格包含时间戳与值)

-
行键只有3个,设置了值的单元格有20个

2.6 查询数据
2.6.1 按行键查询
- 执行命令:
get 'student', '20210102',查询student表行键为20210102的记录

2.6.2 按行键与列族查询
- 执行命令:
get 'student', '20210102', 'info',查询student表行键为20210102的记录,只显示info列族

2.6.3 按行键与列查询
- 执行命令:
get 'student', '20210102', 'info:name',查询student表行键为20210102的记录,只显示info列族里的name列

2.7 修改数据
- 执行命令:
put 'student', '20210101', 'info:age', '18',将行键20210101的info列族的age由19修改为18

- 执行命令:
get 'student', '20210101', 'info:age',查询行键20210101的info列族的age

2.8 删除数据
2.8.1 删除单元格数据
-
执行命令:
delete 'student', '20210103', 'hobby:flower',删除行键为20210103,hobby列族的flower列

-
执行命令:
get 'student', '20210103',查询行键20210103的数据,看是否删除了hobby列族的flower列

2.8.2 删除记录行数据
-
执行命令:
deleteall 'student', '20210103',删除行键为20210103的记录行

-
此时,执行命令:
scan 'student',只有两行记录

2.9 删除学生表表
-
先要用
disable命令禁用,然后用drop命令删除表 -
执行命令:
disable 'student',禁用student表

-
执行命令:
drop 'student',删除student表

-
执行命令:
list,查看student是否被删除

3. 实战总结
- 本次 HBase 实战成功完成了从环境启动到数据全生命周期管理的完整操作流程。在 HBase 2.6.3(兼容 JDK 17)环境下,通过
start-hbase.sh启动集群后,使用 HBase Shell 创建了student和teacher表,并熟练运用put、get、scan等命令进行数据写入与多维度查询。同时,验证了数据修改(覆盖写入)、单元格删除(delete)与整行删除(deleteall)的功能,并严格按照“先 disable 再 drop”的规范删除表。整个过程体现了 HBase 面向列存储、稀疏灵活、高可扩展的特性,为后续大数据应用开发奠定了坚实基础。
