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 + 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