HBase作为分布式、面向列的NoSQL数据库,提供了丰富的Shell命令用于管理表、数据集群及配置,以下从表管理、数据操作、集群维护等维度分类详解常用命令,辅以表格归纳核心操作。

表管理操作
创建表时需指定列族,如create 't1', 'cf1', 'cf2';列出所有表用list;描述表结构(包括列族、版本数等)用describe 't1';禁用表后可删除,需先执行disable 't1'再drop 't1';修改表配置(如列族版本数)需先disable,通过alter 't1', NAME=>'cf1', VERSIONS=>3修改,最后enable。
数据CRUD操作
插入数据:put 't1', 'r1', 'cf1:name', 'Alice',若行键不存在则创建,存在则更新;查询数据:get 't1', 'r1'返回整行,get 't1', 'r1', {COLUMN=>'cf1:name'}指定列;扫描数据:scan 't1'遍历全表,scan 't1', {STARTROW=>'r1', LIMIT=>10}限制范围和数量;删除数据:delete 't1', 'r1', 'cf1:name'删除指定列,deleteall 't1', 'r1'删除整行;计数操作:count 't1'统计行数。
高级数据操作
批量处理:importtsv导入TSV文件,export导出数据到HDFS;过滤器查询:scan 't1', {FILTER=>"PrefixFilter('r1')"}过滤行键前缀,ValueFilter过滤列值;版本控制:get 't1', 'r1', {COLUMN=>'cf1:name', VERSIONS=>2}获取最近2个版本;原子操作:checkandput 't1', 'r1', 'cf1:flag', 'old',若值为'old'则更新为新值。
集群与维护命令
空间管理:status查看集群状态,balance_switch开启/关闭负载均衡;Region操作:move 'region_name', 'server_name'迁移Region,split 't1'分裂表;快照管理:snapshot 't1', 'snapshot1'创建快照,restore_snapshot 'snapshot1'恢复;配置查看:get_config获取当前配置,update_config动态修改配置。

以下为常用命令速查表:
| 类别 | 命令 | 功能说明 |
|---|---|---|
| 表管理 | create 't', 'cf' | 创建表 |
| disable 't' | 禁用表 | |
| drop 't' | 删除表 | |
| 数据插入 | put 't', 'r', 'cf:c', 'v' | 插入/更新数据 |
| 数据查询 | get 't', 'r' | 获取指定行 |
| scan 't' | 扫描全表 | |
| 数据删除 | delete 't', 'r', 'cf:c' | 删除指定列 |
| 集群状态 | status | 查看集群状态 |
| Region管理 | move 'region', 'server' | 迁移Region |
相关问答FAQs
Q1: 如何批量删除HBase表中的数据?
A: 可通过deleteall批量删除行,或结合scan与脚本实现,先scan 't1' {FILTER=>"PrefixFilter('prefix')"}获取目标行键,再循环执行deleteall 't1', 'row_key',若需清空表,可disable 't1'后truncate 't1'(此操作会删除所有数据并重建表)。
Q2: HBase Shell中如何实现模糊查询?
A: 可使用ColumnPrefixFilter(列名前缀匹配)或RegexStringComparator(正则表达式),扫描列名以"user"开头的列:scan 't1', {FILTER=>ColumnPrefixFilter('user')};匹配行键包含"2023"的数据:scan 't1', {FILTER=>RowFilter(=, 'regexstring:.*2023.*')},需注意,模糊查询可能影响性能,建议结合STARTROW和LIMIT缩小范围。

