HBase shell执行批量脚本

本文介绍两种在HBase中批量删除大量小表的方法:一是使用通配符直接禁用并删除匹配正则表达式的表;二是通过编写并执行Shell脚本实现表的禁用与删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景描述:

HBase namespace中有大量无用的小表,占用了过多的block,需要批量删除,了解了一下有两种方式:

1、使用通配符

用drop命令可以删除表。在删除一个表之前必须先将其禁用。

hbase(main):018:0> disable 'emp'
0 row(s) in 1.4580 seconds


hbase(main):019:0> drop 'emp'
0 row(s) in 0.3060 seconds

使用exists 命令验证表是否被删除。

hbase(main):020:0> exists 'emp'
Table emp does not exist

0 row(s) in 0.0730 seconds

drop_all

这个命令是用来在给出删除匹配“regex”表。它的语法如下:

hbase> drop_all t.*’ 

注意:要删除表,则必须先将其禁用。

示例

假设有一些表的名称为raja, rajani, rajendra, rajesh, 和 raju。

hbase(main):017:0> list
TABLE
raja
rajani
rajendra 
rajesh
raju
9 row(s) in 0.0270 seconds

所有这些表以字母raj开始。首先使用disable_all命令禁用所有这些表如下所示。

hbase(main):002:0> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

现在,可以使用 drop_all 命令删除它们,如下所示。

hbase(main):018:0> drop_all 'raj.*'
raja
rajani
rajendra
rajesh
raju

Drop the above 5 tables (y/n)?

y
5 tables successfully dropped

2、使用脚本

1、首先,编写一个文本文件disable_drop_htable.txt:
[plain]  view plain  copy
  1. disable 'lcsk.test_table' 
  2. drop   'lcsk.test_table'
  3. exit
给脚本赋予执行权限,然后执行:

hbase shell disable_drop_htable.txt

即可。

















### HBase Shell 导入数据方法教程 HBase 是一种分布式的 NoSQL 键值存储系统,支持大规模数据的高效读写操作。虽然可以通过 `importtsv` 工具实现批量导入数据的功能[^2],但在某些场景下,可能更倾向于直接通过 HBase Shell 执行命令完成数据导入。 以下是关于如何利用 HBase Shell 导入数据的具体说明: #### 创建结构 在向 HBase 中导入数据之前,需要先创建目标并定义其列族(Column Family)。例如,假设要创建一张名为 `students` 的,并包含两个列族:`personal` 和 `academic`,可以执行如下命令: ```bash create 'students', 'personal', 'academic' ``` 此命令会生成一个新的 HBase `students`,其中包含了指定的列族 `personal` 和 `academic`[^3]。 #### 插入单条记录 如果仅需插入少量的数据,则可以直接使用 `put` 命令逐条添加。下面是一个简单的例子展示如何往上述格中加入一条学生的信息: ```bash put 'students', 'row1', 'personal:name', 'John Doe' put 'students', 'row1', 'personal:age', '25' put 'students', 'row1', 'academic:gpa', '3.8' ``` 以上三条语句分别设置了键为 `row1` 的行中的不同字段值,即姓名、年龄以及 GPA 成绩。 对于更加复杂的情况,比如从外部文件加载大量数据至 HBase 当中,推荐采用编程方式或者借助专门设计用于此类任务的工具如 ImportTsv 来处理大批量数据迁移工作[^2]。 当所有必要的准备工作完成后,可通过扫描整个来验证刚刚录入的内容是否正确无误: ```bash scan 'students' ``` 这段脚本将会返回当前存在于该内的全部记录详情[^3]。 ```python # Python 示例代码片段演示连接到远程服务器并通过 Thrift API 调用 put 方法上传数据 from happybase import Connection connection = Connection('localhost') table = connection.table('students') with table.batch() as b: b.put(b'row-key-1', {b'personal:name': b'Alice Smith', b'personal:age': b'30', b'academic:gpa': b'4.0'}) connection.close() ``` 注意,在实际生产环境中部署前还需要考虑诸如权限管理等问题以保障系统的安全性与稳定性。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值