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