HBase Shell

以下是 **HBase Shell** 的常用命令总结,涵盖表管理、数据操作和常用工具,适合快速查阅和日常使用:

---

### **1. 进入与退出 HBase Shell**
```bash
# 进入 HBase Shell(确保 HBase 服务已启动)
hbase shell

# 退出 Shell
exit
# 或按 Ctrl + D
```

---

### **2. 表管理命令**
#### **创建表**
```bash
# 语法:create '表名', '列族1', '列族2', ...
create 'user', 'info', 'contact'
```

#### **列出所有表**
```bash
list
```

#### **查看表结构**
```bash
describe 'user'
```

#### **禁用/启用表**
```bash
disable 'user'    # 禁用表(删除或修改表前需禁用)
enable 'user'     # 启用表
```

#### **删除表**
```bash
disable 'user'    # 先禁用
drop 'user'       # 再删除
```

#### **检查表状态**
```bash
is_enabled 'user'
is_disabled 'user'
```

---

### **3. 数据操作命令**
#### **插入/更新数据**
```bash
# 语法:put '表名', '行键', '列族:列名', '值'
put 'user', '001', 'info:name', 'Alice'
put 'user', '001', 'contact:email', 'alice@example.com'
```

#### **查询单行数据**
```bash
get 'user', '001'
```

#### **扫描全表数据**
```bash
scan 'user'
```

#### **带条件扫描**
```bash
# 限制返回行数
scan 'user', {LIMIT => 5}

# 过滤特定列族或列
scan 'user', {COLUMNS => ['info:name']}

# 按行键范围扫描(左闭右开)
scan 'user', {STARTROW => '001', STOPROW => '005'}
```

#### **删除数据**
```bash
# 删除某列
delete 'user', '001', 'contact:email'

# 删除整行
deleteall 'user', '001'
```

---

### **4. 高级操作**
#### **统计表行数**
```bash
count 'user', {INTERVAL => 1000}  # 每处理 1000 行显示进度
```

#### **清空表数据**
```bash
truncate 'user'  # 自动禁用、删除并重建表
```

#### **过滤器查询**
```bash
# 查询值等于 'Alice' 的行
scan 'user', FILTER => "ValueFilter(=, 'binary:Alice')"

# 查询列名包含 'name' 的列
scan 'user', FILTER => "ColumnPrefixFilter('name')"
```

---

### **5. 命名空间管理**
#### **创建命名空间**
```bash
create_namespace 'test_ns'
```

#### **在命名空间下创建表**
```bash
create 'test_ns:user', 'info'
```

#### **列出所有命名空间**
```bash
list_namespace
```

---

### **6. 权限管理**
#### **授予用户权限**
```bash
grant 'user', 'RWXCA', 'user'  # 权限:Read, Write, eXecute, Create, Admin
```

#### **查看权限**
```bash
user_permission 'user'
```

---

### **7. 工具命令**
#### **查看 HBase 状态**
```bash
status
```

#### **查看集群版本**
```bash
version
```

#### **查看帮助**
```bash
help '命令名'  # 如 help 'create'
```

---

### **注意事项**
1. **列族设计**:列族需在创建表时定义,后续不可动态修改。
2. **行键设计**:行键是数据分布的核心,影响查询性能。
3. **批量操作**:频繁单行操作效率低,建议使用 HBase API 批量处理。
4. **时间戳**:插入数据时可指定时间戳,默认为系统时间。

---

### **常见问题**
#### **Q1: 执行命令报错 `TableNotFoundException`**
- 检查表名是否拼写正确。
- 确认表是否被禁用(需先启用)。

#### **Q2: 数据更新后未生效**
- HBase 数据最终一致,强制刷新可使用:
  ```bash
  flush 'user'
  ```

#### **Q3: 如何导出/导入数据?**
- 使用 `export` 和 `import` 工具(需退出 Shell 执行):
  ```bash
  # 导出表数据
  hbase org.apache.hadoop.hbase.mapreduce.Export 'user' /path/to/export

  # 导入数据
  hbase org.apache.hadoop.hbase.mapreduce.Import 'user' /path/to/import
  ```

---

掌握这些命令后,您可以通过 HBase Shell 完成大多数日常管理和调试任务!对于复杂操作(如大规模导入),建议使用 HBase API 或工具(如 Spark、Hive)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值