0%

HBase命令

HBase Shell 核心命令全解析

HBase 提供了丰富的 Shell 命令用于表管理、数据操作和集群监控,是日常运维和开发调试的重要工具。本文将详细介绍 HBase 常用命令的语法、功能及使用场景,帮助读者快速掌握 HBase 操作。

表管理命令

1. 创建表(create)

创建 HBase 表时需指定表名和列族(Column Family),列族是表结构的核心组成部分。

语法

1
create '表名', '列族1', '列族2', ...  

示例

1
2
3
4
5
# 创建表 test,包含列族 cf  
create 'test', 'cf'

# 创建表 user,包含列族 info 和 data
create 'user', 'info', 'data'

2. 查看表列表(list)

查看当前 HBase 集群中的所有表,或验证指定表是否存在。

语法

1
2
3
4
5
6
# 查看所有表  
list

# 查看指定表(支持模糊匹配)
list '表名' # 精确匹配
list 'test.*' # 模糊匹配以 test 开头的表

示例

1
list 'test'  # 验证 test 表是否存在  

3. 查看表详情(describe)

查看表的结构信息,包括列族属性(如版本数、TTL、压缩算法等)。

语法

1
describe '表名'  

示例

1
2
3
4
describe 'test'  
# 输出示例:
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf', VERSIONS => '1', TTL => 'FOREVER', COMPRESSION => 'NONE', ...}

4. 修改表结构(alter)

用于新增、删除列族,或修改列族属性(如版本数、TTL 等)。

语法

1
2
3
4
5
6
7
8
# 新增列族  
alter '表名', NAME => '新列族名'

# 删除列族
alter '表名', NAME => '列族名', METHOD => 'delete'

# 修改列族属性(如版本数)
alter '表名', NAME => '列族名', VERSIONS => 5

示例

1
2
3
4
5
# test 表新增列族 info  
alter 'test', NAME => 'info'

# 删除 test 表的列族 cf
alter 'test', NAME => 'cf', METHOD => 'delete'

5. 启用 / 禁用表(enable/disable)

  • 禁用表(disable):表被禁用后无法执行读写操作,删除表前必须先禁用。
  • 启用表(enable):重新激活禁用的表。

语法

1
2
disable '表名'  # 禁用表  
enable '表名' # 启用表

示例

1
2
disable 'test'  # 禁用 test 表  
enable 'test' # 重新启用 test 表

6. 删除表(drop)

删除表前必须先禁用表,否则会报错。

语法

1
drop '表名'  # 需先执行 disable '表名'  

示例

1
2
disable 'test'  # 先禁用表  
drop 'test' # 再删除表

数据操作命令

1. 插入数据(put)

向表中插入或更新数据,通过 RowKey、列族:列名定位单元格(Cell)。

语法

1
put '表名', 'RowKey', '列族:列名', '值'  

示例

1
2
3
4
5
# test 表插入 RowKey 为 row1、列族 cf 下的列 a,值为 value1  
put 'test', 'row1', 'cf:a', 'value1'

# 更新 row1 的 cf:a 列值为 value1-1(自动生成新时间戳)
put 'test', 'row1', 'cf:a', 'value1-1'

2. 查询数据

(1)查询单行数据(get)

获取指定 RowKey 的完整数据或指定列的数据。

语法

1
2
3
4
5
6
# 查询单行所有列  
get '表名', 'RowKey'

# 查询单行指定列族/列
get '表名', 'RowKey', '列族' # 列族下所有列
get '表名', 'RowKey', '列族:列名' # 特定列

示例

1
2
3
4
5
# 查询 row1 的所有数据  
get 'test', 'row1'

# 查询 row1 的 cf:a 列数据
get 'test', 'row1', 'cf:a'
(2)扫描表数据(scan)

批量查询表中数据,支持按 RowKey 范围、列族、过滤条件等筛选。

语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 扫描全表  
scan '表名'

# 扫描指定列族/列
scan '表名', {COLUMNS => ['列族1', '列族2:列名']}

# 按 RowKey 范围扫描(STARTROW 包含,STOPROW 不包含)
scan '表名', {STARTROW => 'row2', STOPROW => 'row5'}

# 限制返回行数
scan '表名', {LIMIT => 10}

# 查看多版本数据(需列族版本数支持)
scan '表名', {RAW => true, VERSIONS => 10}

示例

1
2
# 扫描 test 表中 RowKey 从 row2 到 row5 的 cf:a 列数据,限制返回 3 行  
scan 'test', {COLUMNS => 'cf:a', STARTROW => 'row2', STOPROW => 'row5', LIMIT => 3}
(3)统计行数(count)

计算表中的总行数(全表扫描,大表慎用)。

语法

1
count '表名'  

示例

1
count 'test'  # 输出:2 row(s) in 0.123 seconds  

3. 删除数据

(1)删除指定列(delete)

删除某 RowKey 下指定列的最新版本数据。

语法

1
delete '表名', 'RowKey', '列族:列名'  

示例

1
delete 'test', 'row2', 'cf:b'  # 删除 row2 的 cf:b 列  
(2)删除整行数据(deleteall)

删除某 RowKey 下的所有列数据。

语法

1
deleteall '表名', 'RowKey'  

示例

1
deleteall 'test', 'row3'  # 删除 row3 整行数据  

高级命令:计数器(incr)

HBase 提供原子性计数器功能,用于实现累加计数(如统计曝光量、点击量)。

语法

1
2
3
4
5
# 初始化或累加计数器(默认步长为 1,可指定步长)  
incr '表名', 'RowKey', '列族:列名', [步长]

# 查看计数器值
get_counter '表名', 'RowKey', '列族:列名'

示例

1
2
3
4
5
6
7
8
9
10
11
# 创建计数器表 counters,列族 camp  
create 'counters', 'camp'

# 累加计数:did123456 在 camp:501 投放中的曝光量 +1
incr 'counters', 'did123456', 'camp:501', 1

# 累加计数:did123456 在 camp:502 投放中的曝光量 +2
incr 'counters', 'did123456', 'camp:502', 2

# 查看 camp:502 的计数
get_counter 'counters', 'did123456', 'camp:502' # 输出:COUNTER VALUE = 2

常用命令速查表

操作类型 命令 功能
表管理 create '表名', '列族' 创建表
表管理 list 查看表列表
表管理 describe '表名' 查看表详情
表管理 alter '表名', NAME => '列族' 新增列族
表管理 disable '表名' / enable '表名' 禁用 / 启用表
表管理 drop '表名' 删除表(需先禁用)
数据操作 put '表名', 'RowKey', '列族:列名', '值' 插入 / 更新数据
数据操作 get '表名', 'RowKey' 查询单行数据
数据操作 scan '表名', {条件} 批量扫描数据
数据操作 delete '表名', 'RowKey', '列族:列名' 删除指定列
数据操作 deleteall '表名', 'RowKey' 删除整行数据
高级功能 incr '表名', 'RowKey', '列族:列名' 计数器累加

欢迎关注我的其它发布渠道