HBase-データの更新
HBaseシェルを使用したデータの更新
を使用して既存のセル値を更新できます putコマンド。これを行うには、同じ構文に従い、以下に示すように新しい値を記述します。
put ‘table name’,’row ’,'Column family:column name',’new value’
新しく指定された値が既存の値を置き換え、行を更新します。
例
HBaseにというテーブルがあるとします。 emp 以下のデータで。
hbase(main):003:0> scan 'emp'
ROW COLUMN + CELL
row1 column = personal:name, timestamp = 1418051555, value = raju
row1 column = personal:city, timestamp = 1418275907, value = Hyderabad
row1 column = professional:designation, timestamp = 14180555,value = manager
row1 column = professional:salary, timestamp = 1418035791555,value = 50000
1 row(s) in 0.0100 seconds
次のコマンドは、「Raju」という名前の従業員の都市値をデリーに更新します。
hbase(main):002:0> put 'emp','row1','personal:city','Delhi'
0 row(s) in 0.0400 seconds
更新されたテーブルは次のようになり、ラジュの街が「デリー」に変更されたことがわかります。
hbase(main):003:0> scan 'emp'
ROW COLUMN + CELL
row1 column = personal:name, timestamp = 1418035791555, value = raju
row1 column = personal:city, timestamp = 1418274645907, value = Delhi
row1 column = professional:designation, timestamp = 141857555,value = manager
row1 column = professional:salary, timestamp = 1418039555, value = 50000
1 row(s) in 0.0100 seconds
JavaAPIを使用したデータの更新
を使用して特定のセルのデータを更新できます put()方法。以下の手順に従って、テーブルの既存のセル値を更新します。
ステップ1:構成クラスをインスタンス化する
Configurationクラスは、HBase構成ファイルをそのオブジェクトに追加します。を使用して構成オブジェクトを作成できますcreate() の方法 HbaseConfiguration 以下に示すクラス。
Configuration conf = HbaseConfiguration.create();
ステップ2:HTableクラスをインスタンス化する
あなたはというクラスを持っています HTable、HBaseでのTableの実装。このクラスは、単一のHBaseテーブルと通信するために使用されます。このクラスをインスタンス化するときに、構成オブジェクトとテーブル名をパラメーターとして受け入れます。以下に示すように、HTableクラスをインスタンス化できます。
HTable hTable = new HTable(conf, tableName);
ステップ3:プットクラスをインスタンス化する
HBaseテーブルにデータを挿入するには、 add()メソッドとそのバリアントが使用されます。このメソッドはに属しますPutしたがって、インスタンス化する putクラス。このクラスには、データを挿入する行名が文字列形式で必要です。あなたはインスタンス化することができますPut 以下に示すクラス。
Put p = new Put(Bytes.toBytes("row1"));
ステップ4:既存のセルを更新する
ザ・ add() の方法 Putクラスはデータを挿入するために使用されます。列ファミリー、列修飾子(列名)、および挿入する値をそれぞれ表す3バイトの配列が必要です。を使用してHBaseテーブルにデータを挿入しますadd() 以下に示す方法。
p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column
name"),Bytes.toBytes("value"));
p.add(Bytes.toBytes("personal"),
Bytes.toBytes("city"),Bytes.toBytes("Delih"));
ステップ5:データをテーブルに保存する
必要な行を挿入した後、プットインスタンスをに追加して変更を保存します put() 以下に示すHTableクラスのメソッド。
hTable.put(p);
手順6:HTableインスタンスを閉じる
HBaseテーブルにデータを作成したら、 HTable 以下に示すように、close()メソッドを使用するインスタンス。
hTable.close();
以下に示すのは、特定のテーブルのデータを更新するための完全なプログラムです。
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
public class UpdateData{
public static void main(String[] args) throws IOException {
// Instantiating Configuration class
Configuration config = HBaseConfiguration.create();
// Instantiating HTable class
HTable hTable = new HTable(config, "emp");
// Instantiating Put class
//accepts a row name
Put p = new Put(Bytes.toBytes("row1"));
// Updating a cell value
p.add(Bytes.toBytes("personal"),
Bytes.toBytes("city"),Bytes.toBytes("Delih"));
// Saving the put Instance to the HTable.
hTable.put(p);
System.out.println("data Updated");
// closing HTable
hTable.close();
}
}
上記のプログラムを以下のようにコンパイルして実行します。
$javac UpdateData.java
$java UpdateData
以下が出力になります。
data Updated