HBase-データの読み取り
HBaseシェルを使用したデータの読み取り
ザ・ get コマンドと get() の方法 HTableクラスは、HBaseのテーブルからデータを読み取るために使用されます。使用するgetコマンドを使用すると、一度に1行のデータを取得できます。その構文は次のとおりです。
get ’<table name>’,’row1’
例
次の例は、getコマンドの使用方法を示しています。の最初の行をスキャンしてみましょうemp テーブル。
hbase(main):012:0> get 'emp', '1'
COLUMN CELL
personal : city timestamp = 1417521848375, value = hyderabad
personal : name timestamp = 1417521785385, value = ramu
professional: designation timestamp = 1417521885277, value = manager
professional: salary timestamp = 1417521903862, value = 50000
4 row(s) in 0.0270 seconds
特定の列を読む
以下に示すのは、を使用して特定の列を読み取るための構文です。 get 方法。
hbase> get 'table name', ‘rowid’, {COLUMN ⇒ ‘column family:column name ’}
例
以下に示すのは、HBaseテーブルの特定の列を読み取る例です。
hbase(main):015:0> get 'emp', 'row1', {COLUMN ⇒ 'personal:name'}
COLUMN CELL
personal:name timestamp = 1418035791555, value = raju
1 row(s) in 0.0080 seconds
JavaAPIを使用したデータの読み取り
HBaseテーブルからデータを読み取るには、 get()HTableクラスのメソッド。このメソッドには、のインスタンスが必要です。Getクラス。以下の手順に従って、HBaseテーブルからデータを取得します。
ステップ1:構成クラスをインスタンス化する
Configurationクラスは、HBase構成ファイルをそのオブジェクトに追加します。を使用して構成オブジェクトを作成できますcreate() の方法 HbaseConfiguration 以下に示すクラス。
Configuration conf = HbaseConfiguration.create();
ステップ2:HTableクラスをインスタンス化する
あなたはというクラスを持っています HTable、HBaseでのTableの実装。このクラスは、単一のHBaseテーブルと通信するために使用されます。このクラスをインスタンス化するときに、構成オブジェクトとテーブル名をパラメーターとして受け入れます。以下に示すように、HTableクラスをインスタンス化できます。
HTable hTable = new HTable(conf, tableName);
ステップ3:Getクラスをインスタンス化する
を使用してHBaseテーブルからデータを取得できます get() の方法 HTableクラス。このメソッドは、指定された行からセルを抽出します。それは必要ですGetパラメータとしてのクラスオブジェクト。以下のように作成します。
Get get = new Get(toBytes("row1"));
ステップ4:データを読む
データの取得中に、IDで単一の行を取得したり、行IDのセットで行のセットを取得したり、テーブル全体または行のサブセットをスキャンしたりできます。
のaddメソッドバリアントを使用してHBaseテーブルデータを取得できます Get クラス。
特定の列ファミリーから特定の列を取得するには、次の方法を使用します。
get.addFamily(personal)
特定の列ファミリーからすべての列を取得するには、次の方法を使用します。
get.addColumn(personal, name)
ステップ5:結果を得る
あなたを渡すことによって結果を得る Get のgetメソッドへのクラスインスタンス HTableクラス。このメソッドは、Result要求された結果を保持するクラスオブジェクト。以下はの使用法ですget() 方法。
Result result = table.get(g);
ステップ6:結果インスタンスから値を読み取る
ザ・ Result クラスは getValue()インスタンスから値を読み取るメソッド。以下に示すように使用して、から値を読み取ります。Result インスタンス。
byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));
以下に示すのは、HBaseテーブルから値を読み取るための完全なプログラムです。
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
public class RetriveData{
public static void main(String[] args) throws IOException, Exception{
// Instantiating Configuration class
Configuration config = HBaseConfiguration.create();
// Instantiating HTable class
HTable table = new HTable(config, "emp");
// Instantiating Get class
Get g = new Get(Bytes.toBytes("row1"));
// Reading the data
Result result = table.get(g);
// Reading values from Result class object
byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));
// Printing the values
String name = Bytes.toString(value);
String city = Bytes.toString(value1);
System.out.println("name: " + name + " city: " + city);
}
}
上記のプログラムを以下のようにコンパイルして実行します。
$javac RetriveData.java
$java RetriveData
以下が出力になります。
name: Raju city: Delhi