HBase Shell 是连接 HBase 数据库的主要方式之一,通过它提供的命令,可以很方便地操作 HBase 数据库,例如创建、删除及修改表、向表中添加数据、列出表中的相关信息等操作。这里为你梳理了最常用的 HBase Shell 命令,方便你快速上手和日常查阅。
一、核心命令
1、基本连接与帮助
sql
hbase shell -- 进入 HBase Shell 交互界面
help '命令名' -- 查看特定命令的详细用法
exit -- 退出 HBase Shell
2、表管理
bash
create 创建表,需指定表名和至少一个列族
list 列出所有表
describe 查看表结构
disable/enable 禁用或启用表(删除或修改前需禁用)
drop 删除表(必须先禁用)
exists 检查表是否存在
3、数据操作
bash
put 插入或更新数据
get 获取指定行或列的数据
scan 扫描表数据
delete 删除指定行或列的数据
deleteall 删除整行数据
count 统计表中数据的行数
truncate 清空表数据(自动禁用、删除并重建表)
二、常用命令
下面是一些核心命令的典型用法示例,帮你快速理解:
1、创建表
使用 create 命令创建表,必须指定表名和至少一个列族(Column Family)。
bash
# 语法:create '表名', '列族1', '列族2', ...
create 'user', 'baseInfo', 'schoolInfo'
2、插入和更新数据
使用 put 命令插入或更新数据。你需要指定完整的"坐标":表、行键(Row Key)、列族:列名(Qualifier)和值。
bash
# 语法:put '表名', '行键', '列族:列名', '值'
put 'user', 'rowkey1', 'baseInfo:name', 'tom'
put 'user', 'rowkey1', 'baseInfo:age', '29'
3、查询数据
(1) get 查询单行:获取指定行键的数据
bash
get 'user', 'rowkey1' # 获取整行数据
get 'user', 'rowkey1', 'baseInfo' # 获取该行指定列族的数据
get 'user', 'rowkey1', 'baseInfo:name' # 获取特定列的数据
(2)scan 扫描表:用于范围查询或全表扫描。
bash
scan 'user' # 扫描全表
scan 'user', {COLUMNS => 'baseInfo:name'} # 只扫描特定列
scan 'user', {STARTROW => 'rowkey1', STOPROW => 'rowkey5'} # 按行键范围扫描(左闭右开)[citation:8]
scan 'user', {LIMIT => 5} # 限制返回行数[citation:8]
4、删除数据和表
(1)delete 删除数据:删除指定行或列的数据。
bash
delete 'user', 'rowkey1', 'baseInfo:age' # 删除某列
deleteall 'user', 'rowkey1' # 删除整行
(2)drop 删除表:删除表之前必须先使用 disable 禁用表。
bash
disable 'user'
drop 'user'
三、高级操作和技巧
掌握基础后,这些高级功能能让操作更高效
1、使用过滤器精准查询
bash
# 查询值等于 'tom' 的所有行
scan 'user', FILTER => "ValueFilter(=, 'binary:tom')"
# 查询行键前缀为 'rk' 的所有行
scan 'user', FILTER => "PrefixFilter('rk')"
2、清空表数据
bash
truncate 'user'
3、修改表结构
bash
alter 'user', 'teacherInfo' # 添加列族
alter 'user', {NAME => 'teacherInfo', METHOD => 'delete'} # 删除列族
四、注意事项
行键设计很重要
行键(Row Key)决定了数据在集群中的分布,直接影响查询性能,需要合理设计。
列族需预先定义
列族需要在创建表时就定义好,后续无法动态添加新的列族(但可以添加列族内的新列)。
谨慎操作删除命令
delete、deleteall 和 drop 都是不可逆的操作,使用时务必确认目标数据。
HBase Shell 的命令非常丰富,以上列出的是最常用的一部分。你可以在 Shell 中使用 help '命令名' 来查看某个命令的详细用法。