Hbase-delete-data

提供:Dev Guides
移動先:案内検索

HBase-データの削除

テーブル内の特定のセルを削除する

*delete* コマンドを使用すると、テーブル内の特定のセルを削除できます。 *delete* コマンドの構文は次のとおりです。
delete ‘<table name>’, ‘<row>’, ‘<column name >’, ‘<time stamp>’

特定のセルを削除する例を次に示します。 ここで給与を削除しています。

hbase(main):006:0> delete 'emp', '1', 'personal data:city',
1417521848375
0 row(s) in 0.0060 seconds

テーブル内のすべてのセルを削除する

「deleteall」コマンドを使用すると、行のすべてのセルを削除できます。 以下に、deleteallコマンドの構文を示します。

deleteall ‘<table name>’, ‘<row>’,

次に、empテーブルのrow1のすべてのセルを削除する「deleteall」コマンドの例を示します。

hbase(main):007:0> deleteall 'emp','1'
0 row(s) in 0.0240 seconds
*scan* コマンドを使用してテーブルを確認します。 テーブルを削除した後のテーブルのスナップショットを以下に示します。
hbase(main):022:0> scan 'emp'

ROW                  COLUMN &plus; CELL

2 column = personal data:city, timestamp = 1417524574905, value = chennai

2 column = personal data:name, timestamp = 1417524556125, value = ravi

2 column = professional data:designation, timestamp = 1417524204, value = sr:engg

2 column = professional data:salary, timestamp = 1417524604221, value = 30000

3 column = personal data:city, timestamp = 1417524681780, value = delhi

3 column = personal data:name, timestamp = 1417524672067, value = rajesh

3 column = professional data:designation, timestamp = 1417523187, value = jr:engg

3 column = professional data:salary, timestamp = 1417524702514, value = 25000

Java APIを使用したデータの削除

*HTable* クラスの* delete()*メソッドを使用して、HBaseテーブルからデータを削除できます。 以下の手順に従って、テーブルからデータを削除します。

ステップ1:構成クラスのインスタンス化

*Configuration* クラスは、HBase構成ファイルをオブジェクトに追加します。 以下に示すように、 *HbaseConfiguration* クラスの* create()*メソッドを使用して、構成オブジェクトを作成できます。
Configuration conf = HbaseConfiguration.create();

ステップ2:HTableクラスをインスタンス化する

HBaseのTableの実装である HTable というクラスがあります。 このクラスは、単一のHBaseテーブルと通信するために使用されます。 このクラスをインスタンス化する際、構成オブジェクトとテーブル名をパラメーターとして受け入れます。 以下に示すように、HTableクラスをインスタンス化できます。

HTable hTable = new HTable(conf, tableName);

ステップ3:削除クラスをインスタンス化する

削除する行のROWIDをバイト配列形式で渡すことにより、 Delete クラスをインスタンス化します。 タイムスタンプとRowlockをこのコンストラクターに渡すこともできます。

Delete delete = new Delete(toBytes("row1"));

ステップ4:削除するデータを選択する

*Delete* クラスのdeleteメソッドを使用してデータを削除できます。 このクラスには、さまざまな削除メソッドがあります。 これらの方法を使用して、削除する列または列ファミリを選択します。 Deleteクラスメソッドの使用法を示す次の例をご覧ください。
delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
delete.deleteFamily(Bytes.toBytes("professional"));

ステップ5:データを削除する

以下に示すように、 HTable クラスの* delete()メソッドに *delete インスタンスを渡すことにより、選択したデータを削除します。

table.delete(delete);

ステップ6:HTableInstanceを閉じます

データを削除したら、 HTable インスタンスを閉じます。

table.close();

以下は、HBaseテーブルからデータを削除する完全なプログラムです。

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

public class DeleteData {

   public static void main(String[] args) throws IOException {

     //Instantiating Configuration class
      Configuration conf = HBaseConfiguration.create();

     //Instantiating HTable class
      HTable table = new HTable(conf, "employee");

     //Instantiating Delete class
      Delete delete = new Delete(Bytes.toBytes("row1"));
      delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
      delete.deleteFamily(Bytes.toBytes("professional"));

     //deleting the data
      table.delete(delete);

     //closing the HTable object
      table.close();
      System.out.println("data deleted.....");
   }
}

以下に示すように、上記のプログラムをコンパイルして実行します。

$javac Deletedata.java
$java DeleteData

出力は次のようになります。

data deleted