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缩小范围。
