天天看點

Phoenix——實作向HBase發送标準SQL語句

寫在前面一:

本文總結基于HBase的SQL查詢系統——Salesforce phoenix

Phoenix——實作向HBase發送标準SQL語句

寫在前面二:

環境說明:

Phoenix——實作向HBase發送标準SQL語句

一、什麼是Phoenix

摘自官網:

Phoenix——實作向HBase發送标準SQL語句

Phoenix是一個提供hbase的sql操作的架構,Phoenix是建構在HBase之上的一個SQL中間層。

Phoenix全然使用Java編寫,代碼位于GitHub上,而且提供了一個client可嵌入的JDBC驅動。對于簡單的低延遲查詢,其性能量級為毫秒。對于百萬級别的行數來說,其性能量級為秒。Phoenix并非像HBase那樣

用于map-reduce job的,而是通過标準化的語言來訪問HBase資料的。

Phoenix最值得關注的特性:

1、嵌入式的JDBC驅動,實作了大部分的java.sql接口。包含中繼資料API

2、能夠通過多部行鍵或是鍵/值單元對列進行模組化

3、完好的查詢支援,能夠使用多個謂詞以及優化的掃描鍵

4、DDL支援:通過CREATE TABLE、DROP TABLE及ALTER TABLE來加入/删除列

5、版本号化的模式倉庫:當寫入資料時,快照查詢會使用恰當的模式

6、DML支援:用于逐行插入的UPSERT VALUES、用于同樣或不同表之間大量傳輸資料的UPSERT SELECT、用于删除行的DELETE

7、通過client的批處理實作的有限的事務支援

8、單表——還沒有連接配接,同一時候二級索引也在開發其中

9、緊跟ANSI SQL标準

二、Phoenix原理

Phoenix基本原理是将一個對于HBase client來說比較複雜的查詢轉換成一系列Region Scan,結合coprocessor和custom  filter在多台Region Server上進行并行查詢。彙總各個Scan結果。

種種迹象表明。Phoenix應該不是個優化的OLAP系統,更像是一個用于簡單單表查詢,過濾。排序,檢索的OLTP系統。 Phoenix 能夠為我們眼下大資料平台提供比較便捷的資料操作能力(直接用jdbc方式),性能比較不錯。注意不要使用多表查詢就可以 。

三、Phoenix安裝配置

1、下載下傳

phoenix-3.0.0-incubating.tar.gz

http://phoenix.incubator.apache.org/download.html#Installation

2、拷貝phoenix-3.0.0-incubating/common/phoenix-core-3.0.0-incubating.jar至$HBASE_HOME/lib/下

3、重新啟動HBase叢集

若通過client訪問phoenix,需進行下面操作:

把phoenix-3.0.0-incubating/hadoop-1/phoenix-3.0.0-incubating-client.jar加入到Phoenix用戶端的類路徑下

四、訪問Phoenix

4.1、通過指令行

進入phoenix

cd /home/yujianxin/hbase/phoenix/phoenix-3.0.0-incubating/bin

./sqlline.py slave3:2181

出現下面響應,說明成功安裝

Phoenix——實作向HBase發送标準SQL語句

4.2、通過Java

Phoenix——實作向HBase發送标準SQL語句

4.3、通過SQLclientSQuirrel訪問

下載下傳位址:http://squirrel-sql.sourceforge.net/

再進行安裝配置就可以。

五、使用Phoenix

使用phoenix-3.0.0-incubating.tar.gz自帶的資料進行測試

Phoenix——實作向HBase發送标準SQL語句

當中。WEB_STAT.sql的内容例如以下:

Phoenix——實作向HBase發送标準SQL語句

運作以上指令後,檢視phoenix中的表:

Phoenix——實作向HBase發送标準SQL語句
Phoenix——實作向HBase發送标準SQL語句

Phoenix支援模糊查詢:

Phoenix——實作向HBase發送标準SQL語句

檢視HBase中的表,例如以下:

Phoenix——實作向HBase發送标準SQL語句

就可以通過Phoenix這個建構在HBase之上的SQL中間層,向HBase發送标準sql語句。對HBase進行操作。