Vla*_*ala 14 command-line hbase
我可以告诉hbase使用以下命令禁用和删除特定的表:
disable 'tablename'
drop 'tablename'
Run Code Online (Sandbox Code Playgroud)
但我想删除数据库中的所有表,而不是硬编码任何表的名称.有没有办法做到这一点?我想通过命令行实用程序执行此操作./hbase shell,而不是通过Java或Thrift执行此操作.
ecl*_*ark 20
disable_all和drop_all已添加为HBase ruby shell中的命令.这些命令是在jira HBASE-3506中添加的. 这些命令使用表的正则表达式来禁用/删除.他们会在继续之前要求确认.这应该会使很多表格变得非常容易,并且不需要外部库或脚本.
Sum*_*man 10
我有一个方便的脚本,使用Python Happybase库完成此操作:
import happybase
c = happybase.Connection()
for table in c.tables():
c.disable_table(table)
c.delete_table(table)
print "Deleted: " + table
Run Code Online (Sandbox Code Playgroud)
您将需要安装Happybase才能使用此脚本,您可以将其安装为:
sudo easy_install happybase
Run Code Online (Sandbox Code Playgroud)
您可以将命令传递给bin/hbase shell命令.从那里,您可以使用一些脚本来获取表名,并将禁用/删除命令传递回hbase.
即
echo "list" | bin/hbase shell | ./filter_table_names.pl > table_names.txt
./turn_table_names_into_disable_delete_commands.pl table_names.txt | bin/hbase shell
Run Code Online (Sandbox Code Playgroud)