HBase読み取りデータ【hbase APIを含む一般的な操作アドレスは、参照のみ】

37913 ワード

記事のソース:http://www.yiibai.com/hbase/hbase_read_.data.html【hbase APIよくある操作】
getコマンドとHTable類のget()メソッドは、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
Java APIを使ってデータを読み取ります.
一つのHBaseテーブルからデータを読み込むには、HTable類のget()方法を使います.この方法はGetクラスの一例を必要とする.次のように、HBaseテーブルからデータの与えられたステップを検索します.
第1ステップ:実装Configrationクラス
ConfigrationクラスはHBaseのプロファイルをそのオブジェクトに追加しました.HbaseConfigration類のcreate()方法を使用して、下図のようにオブジェクトを配置します.
Configuration conf = HbaseConfiguration.create();
ステップ2:HTableクラスの実装
HTableという種類があります.HBaseの中のTable類を実現します.このような単一HBase用のテーブルは通信します.このクラスの例では、パラメータとして設定オブジェクトとテーブル名が受け入れられます.HTable類を実例化し、下図のようにします.
HTable hTable = new HTable(conf, tableName);
ステップ3:実装獲得クラス
HBaseテーブルからHTable類のget()方法を使ってデータを検索することができます.この方法は、与えられた行のセルを抽出します.パラメータとしてGet類のオブジェクトが必要です.下図のように作成します.
Get get = new Get(toBytes("row1"));
ステップ4:データの読み込み
データを検索すると、IDによって1つの列を得ることができます.または、行のグループIDを得ることができます.または、テーブルまたは行のサブセット全体をスキャンします.
Getクラスのadd方法を使って、HBaseテーブルのデータを検索することができます.
特定のカラム族から指定の列を取得するには、次の方法があります.
get.addFamily(personal) 
特定の列族のすべての列を得るには、次の方法があります.
get.addColumn(personal, name) 
ステップ5:結果の取得
取得結果は、GetクラスのインスタンスのHTableクラスのget方法によって行われる.この方法はResultクラスのオブジェクトを返します.要求された結果を保存します.以下に示すのはget()法の使用である.
Result result = table.get(g);  
ステップ6:Resultインスタンスから値を読む
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