HBase Shell 核心命令全解析
HBase 提供了丰富的 Shell 命令用于表管理、数据操作和集群监控,是日常运维和开发调试的重要工具。本文将详细介绍 HBase 常用命令的语法、功能及使用场景,帮助读者快速掌握 HBase 操作。
表管理命令
1. 创建表(create)
创建 HBase 表时需指定表名和列族(Column Family),列族是表结构的核心组成部分。
语法:
1 | create '表名', '列族1', '列族2', ... |
示例:
1 | 创建表 test,包含列族 cf |
2. 查看表列表(list)
查看当前 HBase 集群中的所有表,或验证指定表是否存在。
语法:
1 | 查看所有表 |
示例:
1 | list 'test' # 验证 test 表是否存在 |
3. 查看表详情(describe)
查看表的结构信息,包括列族属性(如版本数、TTL、压缩算法等)。
语法:
1 | describe '表名' |
示例:
1 | describe 'test' |
4. 修改表结构(alter)
用于新增、删除列族,或修改列族属性(如版本数、TTL 等)。
语法:
1 | 新增列族 |
示例:
1 | 为 test 表新增列族 info |
5. 启用 / 禁用表(enable/disable)
- 禁用表(disable):表被禁用后无法执行读写操作,删除表前必须先禁用。
- 启用表(enable):重新激活禁用的表。
语法:
1 | disable '表名' # 禁用表 |
示例:
1 | disable 'test' # 禁用 test 表 |
6. 删除表(drop)
删除表前必须先禁用表,否则会报错。
语法:
1 | drop '表名' # 需先执行 disable '表名' |
示例:
1 | disable 'test' # 先禁用表 |
数据操作命令
1. 插入数据(put)
向表中插入或更新数据,通过 RowKey、列族:列名定位单元格(Cell)。
语法:
1 | put '表名', 'RowKey', '列族:列名', '值' |
示例:
1 | 向 test 表插入 RowKey 为 row1、列族 cf 下的列 a,值为 value1 |
2. 查询数据
(1)查询单行数据(get)
获取指定 RowKey 的完整数据或指定列的数据。
语法:
1 | 查询单行所有列 |
示例:
1 | 查询 row1 的所有数据 |
(2)扫描表数据(scan)
批量查询表中数据,支持按 RowKey 范围、列族、过滤条件等筛选。
语法:
1 | 扫描全表 |
示例:
1 | 扫描 test 表中 RowKey 从 row2 到 row5 的 cf:a 列数据,限制返回 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 | 初始化或累加计数器(默认步长为 1,可指定步长) |
示例:
1 | 创建计数器表 counters,列族 camp |
常用命令速查表
| 操作类型 | 命令 | 功能 |
|---|---|---|
| 表管理 | create '表名', '列族' |
创建表 |
| 表管理 | list |
查看表列表 |
| 表管理 | describe '表名' |
查看表详情 |
| 表管理 | alter '表名', NAME => '列族' |
新增列族 |
| 表管理 | disable '表名' / enable '表名' |
禁用 / 启用表 |
| 表管理 | drop '表名' |
删除表(需先禁用) |
| 数据操作 | put '表名', 'RowKey', '列族:列名', '值' |
插入 / 更新数据 |
| 数据操作 | get '表名', 'RowKey' |
查询单行数据 |
| 数据操作 | scan '表名', {条件} |
批量扫描数据 |
| 数据操作 | delete '表名', 'RowKey', '列族:列名' |
删除指定列 |
| 数据操作 | deleteall '表名', 'RowKey' |
删除整行数据 |
| 高级功能 | incr '表名', 'RowKey', '列族:列名' |
计数器累加 |