16

次を使用して、特定のテーブルを無効にして削除するようにhbaseに指示できます。

disable 'tablename'
drop 'tablename'

しかし、テーブルの名前をハードコーディングせずに、データベース内のすべてのテーブルを削除したいと思います。これを行う方法はありますか?./hbase shellJavaやThriftではなく、コマンドラインユーティリティを使用してこれを実行したいと思います。

4

6 に答える 6

21

disable_alldrop_allが、HBaseRubyシェルのコマンドとして追加されました。これらのコマンドはjiraHBASE-3506で追加されました。これらのコマンド は、テーブルの正規表現を使用して無効化/削除します。そして、続行する前に確認を求めます。これにより、多くのテーブルを簡単に削除でき、外部のライブラリやスクリプトを必要としません。

于 2012-11-15T00:53:04.017 に答える
10

Python Happybaseライブラリを使用して、これを正確に実行する便利なスクリプトがあります。

import happybase

c = happybase.Connection()

for table in c.tables():
  c.disable_table(table)
  c.delete_table(table)
  print "Deleted: " + table

このスクリプトを使用するには、Happybaseをインストールする必要があり、次のようにインストールできます。

sudo easy_install happybase
于 2012-06-06T17:56:07.867 に答える
6

コマンドをコマンドにパイプできますbin/hbase shell。そこから、いくつかのスクリプトを使用してテーブル名を取得し、disable/deleteコマンドを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 
于 2010-10-22T17:01:30.173 に答える
1

ハックがあります。$ HBASE_HOME / lib / ruby​​ / shell / commands / list.rbファイルを開き、コマンドメソッドの下部に以下の行を追加します。

return list

その後、listコマンドはすべてのテーブルの名前の配列を返します。そして、このようにします。

list.each {|t| disable t;drop t}
于 2013-06-12T08:11:02.420 に答える
0

私はhbaseシェルを介してテーブルを削除していませんが、コマンドラインからテーブルを削除し
ます-hadoop分散ファイルシステムディレクトリを削除し、次に
-新しいクリーンなhadoop分散ファイルシステムディレクトリを作成し
、-hadoop分散ファイルシステムを'でフォーマットしますhadoop namenode -format'、次に、
-start-all.shおよびstart-hbase.sh

参照: http:
//hadoop.apache.org/common/docs/r0.20.1/api/overview-summary.html#overview_description

于 2010-12-29T17:46:56.157 に答える
0

シェルスクリプトを介して「ワンライナー」でこれを行うものを探している場合は、次の方法を使用できます。

$ echo 'list.each {|t| disable t; drop t}; quit;' | hbase shell

注:上記はBashシェルプロンプトから実行されました。コマンドをエコーし​​て、コマンドhbase shellから返されたすべてのテーブルをループし、返されlistた配列を反復処理するときに各テーブルを無効にしてドロップしますlist。完了すると、終了します。

于 2015-10-24T12:20:18.157 に答える