HBase クエリの例: HBase の put()、get()、scan() コマンド

HBase テーブルへのデータの書き込み: シェル

put コマンドは、データをテーブルに保存するために使用されます。

Syntax:  put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>

このコマンドは以下の目的で使用されます

  • 定義または指定されたテーブル、行、または列にセルの「値」を配置します。
  • オプションでタイムスタンプを調整します。

例:

  • ここでは、テーブル「guru99」の行 r1 と列 c1 に値を配置しています。
    hbase> put 'guru99', 'r1', 'c1', 'value', 10
  • 以下のスクリーンショットに示すように、テーブル「guru10,15」に 30、99、XNUMX の XNUMX つの値を配置しました。

HBase テーブルへのデータの書き込み: シェル

  • テーブル「Guru99」に g のようなテーブル参照があるとします。 同様にテーブル参照に対してコマンドを実行することもできます
    hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
  • 「guru99」に値を入力すると、出力は上のスクリーンショットのようになります。

HBase テーブルからのデータの読み取り: シェル

このセクションでは、次の点を確認します。

  • HBaseテーブル「guru99」に挿入される値
  • HBase テーブル guru99 に存在する値を含む列名

HBase テーブルからのデータの読み取り: シェル

上のスクリーンショットから推測できるのは、

  • HBase シェルで「scan」コマンドを実行すると、次のように「guru99」に挿入された値が表示されます。
  • HBase シェルでは、コードによって挿入された値が列名と行名とともに表示されます。
  • ここでは、挿入された列名が「教育」と「プロジェクト」であることがわかります。
  • 挿入される値は「ビッグデータ」と「HBase チュートリアル」を言及された列に追加

Get コマンドを使用してテーブルからデータを読み取ることもできます。

Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}

ここTIMERANGE、TIMESTAMP、VERSIONS、FILTERS が含まれます。

このコマンドを使用すると、テーブル内の行またはセルの内容を取得できます。 それに加えて、TIMESTAMP、TIMERANGE、VERSIONS、FILTERS などのパラメータを追加して、特定の行またはセルの内容を取得することもできます。

HBase テーブルからのデータの読み取り: シェル

例:-

hbase> get 'guru99', 'r1', {COLUMN => 'c1'}

テーブル「guru99」の場合、上のスクリーンショットに示すように、このコマンドを使用すると行 r1 と列 c1 の値が表示されます。

hbase> get 'guru99', 'r1'

テーブル「guru99」の行r1の値は、このコマンドを使用して表示されます。

hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}

テーブル「guru99」の行1のts1とts2の時間範囲の値は、このコマンドを使用して表示されます。

hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

テーブル「guru99」の行r1と列ファミリのc1、c2、c3の値は、このコマンドを使用して表示されます。

HBase テーブルへのデータの書き込み: JAVA API

このステップでは、HBase テーブル「guru99」にデータを書き込みます。

まず、HBase から値を挿入および取得するためのコードを作成する必要があります。HBaseLoading.java プログラム。

列レベルでテーブルに値を作成して挿入するには、以下のようなコードを記述する必要があります。.

HBase テーブルへのデータの書き込み: JAVA API

上のスクリーンショットより

  1. HBase 構成を作成すると、base-site.xml および hbase-default.xml ファイルに設定した構成がすべて参照されます。 HBase のインストール
  2. HTableメソッドを使用したテーブル「guru99」の作成
  3. テーブル「guru1」にrow99を追加
  4. 列名「education」と「projects」を指定し、それぞれの行の列名に値を挿入します1。 ここで挿入される値は「BigData」と「HBaseTutorials」です。

HBase テーブルからデータを読み取ります: Java API

上のセクションで HBase テーブルに配置した値が何であれ、ここではそれらの値をフェッチして表示します。

「guru99」に保存された結果を取得する場合

HBase テーブルからデータを読み取ります: Java API

上のスクリーンショットは、HBase テーブル「guru99」からデータが読み取られていることを示しています。

  1. ここでは、列ファミリー、つまり「教育」と「プロジェクト」に格納されている値を取得します。
  2. 「get」コマンドを使用して、HBase テーブルに格納されている値を取得します。
  3. 「scan」コマンドによるスキャン結果。 row1 に保存されている値がコンソールに表示されます。

コードの作成が完了したら、実行する必要があります ジャワ このようなアプリケーション

  • HBaseLoading.javaを右クリックします。 -> 実行者として実行 -> Java 申し込み
  • 「HBaseLoading .java」を実行すると、値が HBase の各列の「guru99」に挿入され、同じプログラムで値を取得することもできます。

これが完全なコードです

import java.io.IOException;							
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.Put;							
import org.apache.hadoop.hbase.client.Result;						
import org.apache.hadoop.hbase.client.ResultScanner;						
import org.apache.hadoop.hbase.client.Scan;						
import org.apache.hadoop.hbase.util.Bytes;							
public class HBaseLoading							
{							
public static void main(String[] args) throws IOException						
{							
/* When you create a HBaseConfiguration, it reads in whatever you've set into your hbase-site.xml and in hbase-default.xml, as long as these can be found on the CLASSPATH*/							

org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();							

/*This instantiates an HTable object that connects you to the "test" table*/	

HTable table = new HTable(config, "guru99");										

/* To add to a row, use Put. A Put constructor takes the name of the row you want to insert into as a byte array.*/					

Put p = new Put(Bytes.toBytes("row1"));										

/*To set the value you'd like to update in the row 'row1', specify  the column family, column qualifier, and value of the table cell you'd like to update.  The column family must already exist in your table schema.  The qualifier can be anything.*/ 							

p.add(Bytes.toBytes("education"), Bytes.toBytes("col1"),Bytes.toBytes("BigData"));								
p.add(Bytes.toBytes("projects"),Bytes.toBytes("col2"),Bytes.toBytes("HBaseTutorials"));

// Once you've adorned your Put instance with all the updates you want to  make, to commit it do the following 							

table.put(p);	

// Now, to retrieve the data we just wrote.	

  Get g = new Get(Bytes.toBytes("row1"));										
  Result r = table.get(g);					

byte [] value = r.getValue(Bytes.toBytes("education"),Bytes.toBytes("col1"));											
byte [] value1 = r.getValue(Bytes.toBytes("projects"),Bytes.toBytes("col2"));											
String valueStr = Bytes.toString(value);							

String valueStr1 = Bytes.toString(value1);							
System.out.println("GET: " +"education: "+ valueStr+"projects: "+valueStr1);														

  Scan s = new Scan();								

s.addColumn(Bytes.toBytes("education"), Bytes.toBytes("col1"));										
s.addColumn(Bytes.toBytes("projects"), Bytes.toBytes("col2"));										
ResultScanner scanner = table.getScanner(s);							
try							
{							
for (Result rr = scanner.next(); rr != null; rr = scanner.next())									
   {							
System.out.println("Found row : " + rr);										
       }							
} finally							
{							
// Make sure you close your scanners when you are done!						

scanner.close();							
       }							
   }							
}

まとめ

このチュートリアルで説明したように、put コマンドを使用してテーブルにデータを挿入できます。 scan、get コマンドを使用してテーブルからデータを読み取ることができます