ApacheTajo-HBaseとの統合

ApacheTajoはHBase統合をサポートしています。これにより、TajoのHBaseテーブルにアクセスできます。HBaseは、Hadoopファイルシステム上に構築された分散列指向データベースです。これはHadoopエコシステムの一部であり、Hadoopファイルシステム内のデータへのランダムなリアルタイムの読み取り/書き込みアクセスを提供します。HBase統合を構成するには、次の手順が必要です。

環境変数を設定する

「conf / tajo-env.sh」ファイルに次の変更を追加します。

$ vi conf/tajo-env.sh  
# HBase home directory. It is opitional but is required mandatorily to use HBase. 
# export HBASE_HOME = path/to/HBase

HBaseパスを含めた後、TajoはHBaseライブラリファイルをクラスパスに設定します。

外部テーブルを作成する

次の構文を使用して外部テーブルを作成します-

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] <table_name> [(<column_name> <data_type>, ... )] 
USING hbase WITH ('table' = '<hbase_table_name>' 
, 'columns' = ':key,<column_family_name>:<qualifier_name>, ...' 
, 'hbase.zookeeper.quorum' = '<zookeeper_address>' 
, 'hbase.zookeeper.property.clientPort' = '<zookeeper_client_port>') 
[LOCATION 'hbase:zk://<hostname>:<port>/'] ;

HBaseテーブルにアクセスするには、テーブルスペースの場所を構成する必要があります。

ここに、

  • Table−hbaseオリジンテーブル名を設定します。外部テーブルを作成する場合、そのテーブルはHBaseに存在する必要があります。

  • Columns−キーはHBase行キーを指します。列エントリの数は、Tajoテーブルの列の数と同じである必要があります。

  • hbase.zookeeper.quorum −Zookeeperクォーラムアドレスを設定します。

  • hbase.zookeeper.property.clientPort −zookeeperクライアントポートを設定します。

Query

CREATE EXTERNAL TABLE students (rowkey text,id int,name text) 
USING hbase WITH ('table' = 'students', 'columns' = ':key,info:id,content:name') 
LOCATION 'hbase:zk://<hostname>:<port>/';

ここで、[場所のパス]フィールドは、zookeeperクライアントのポートIDを設定します。ポートを設定しない場合、Tajoはhbase-site.xmlファイルのプロパティを参照します。

HBaseでテーブルを作成する

次のクエリに示すように、「hbaseshell」コマンドを使用してHBaseインタラクティブシェルを開始できます。

Query

/bin/hbase shell

Result

上記のクエリは、次の結果を生成します。

hbase(main):001:0>

HBaseをクエリする手順

HBaseにクエリを実行するには、次の手順を実行する必要があります-

Step 1 −次のコマンドをHBaseシェルにパイプして、「チュートリアル」テーブルを作成します。

Query

hbase(main):001:0> create ‘students’,{NAME => ’info’},{NAME => ’content’} 
put 'students', ‘row-01', 'content:name', 'Adam' 
put 'students', ‘row-01', 'info:id', '001' 
put 'students', ‘row-02', 'content:name', 'Amit' 
put 'students', ‘row-02', 'info:id', '002' 
put 'students', ‘row-03', 'content:name', 'Bob' 
put 'students', ‘row-03', 'info:id', ‘003'

Step 2 −ここで、hbaseシェルで次のコマンドを発行して、データをテーブルにロードします。

main):001:0> cat ../hbase/hbase-students.txt | bin/hbase shell

Step 3 −ここで、Tajoシェルに戻り、次のコマンドを実行して、テーブルのメタデータを表示します。

default> \d students;  

table name: default.students 
table path: 
store type: HBASE 
number of rows: unknown 
volume: 0 B 
Options: 
   'columns' = ':key,info:id,content:name' 
   'table' = 'students'  

schema: 
rowkey  TEXT 
id  INT4 
name TEXT

Step 4 −テーブルから結果をフェッチするには、次のクエリを使用します−

Query

default> select * from students

Result

上記のクエリは次の結果をフェッチします-

rowkey,  id,  name 
------------------------------- 
row-01,  001,  Adam 
row-02,  002,  Amit 
row-03   003,  Bob