當(dāng)前位置:首頁(yè) > IT技術(shù) > 數(shù)據(jù)庫(kù) > 正文

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句
2021-09-13 11:36:24

寫在前面一:

本文總結(jié)基于HBase的SQL查詢系統(tǒng)——Salesforce?phoenix

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_sql

寫在前面二:

環(huán)境說(shuō)明:

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_java_02

一、什么是Phoenix

摘自官網(wǎng):

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_sql_03

Phoenix是一個(gè)提供hbase的sql操作的框架,Phoenix是構(gòu)建在HBase之上的一個(gè)SQL中間層。

Phoenix全然使用Java編寫,代碼位于GitHub上,而且提供了一個(gè)client可嵌入的JDBC驅(qū)動(dòng)。對(duì)于簡(jiǎn)單的低延遲查詢,其性能量級(jí)為毫秒。對(duì)于百萬(wàn)級(jí)別的行數(shù)來(lái)說(shuō),其性能量級(jí)為秒。Phoenix并非像HBase那樣
用于map-reduce job的,而是通過(guò)標(biāo)準(zhǔn)化的語(yǔ)言來(lái)訪問(wèn)HBase數(shù)據(jù)的。

Phoenix最值得關(guān)注的特性:
1、嵌入式的JDBC驅(qū)動(dòng),實(shí)現(xiàn)了大部分的java.sql接口。包含元數(shù)據(jù)API
2、能夠通過(guò)多部行鍵或是鍵/值單元對(duì)列進(jìn)行建模
3、完好的查詢支持,能夠使用多個(gè)謂詞以及優(yōu)化的掃描鍵
4、DDL支持:通過(guò)CREATE TABLE、DROP TABLE及ALTER TABLE來(lái)加入/刪除列
5、版本號(hào)化的模式倉(cāng)庫(kù):當(dāng)寫入數(shù)據(jù)時(shí),快照查詢會(huì)使用恰當(dāng)?shù)哪J?br/>6、DML支持:用于逐行插入的UPSERT VALUES、用于同樣或不同表之間大量傳輸數(shù)據(jù)的UPSERT SELECT、用于刪除行的DELETE
7、通過(guò)client的批處理實(shí)現(xiàn)的有限的事務(wù)支持
8、單表——還沒(méi)有連接,同一時(shí)候二級(jí)索引也在開(kāi)發(fā)其中
9、緊跟ANSI SQL標(biāo)準(zhǔn)

二、Phoenix原理

Phoenix基本原理是將一個(gè)對(duì)于HBase client來(lái)說(shuō)比較復(fù)雜的查詢轉(zhuǎn)換成一系列Region Scan,結(jié)合coprocessor和custom ?filter在多臺(tái)Region Server上進(jìn)行并行查詢。匯總各個(gè)Scan結(jié)果。

種種跡象表明。Phoenix應(yīng)該不是個(gè)優(yōu)化的OLAP系統(tǒng),更像是一個(gè)用于簡(jiǎn)單單表查詢,過(guò)濾。排序,檢索的OLTP系統(tǒng)。 Phoenix 能夠?yàn)槲覀冄巯麓髷?shù)據(jù)平臺(tái)提供比較便捷的數(shù)據(jù)操作能力(直接用jdbc方式),性能比較不錯(cuò)。注意不要使用多表查詢就可以 。

?

三、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、重新啟動(dòng)HBase集群

若通過(guò)client訪問(wèn)phoenix,需進(jìn)行下面操作:
把phoenix-3.0.0-incubating/hadoop-1/phoenix-3.0.0-incubating-client.jar加入到Phoenix客戶端的類路徑下

四、訪問(wèn)Phoenix

4.1、通過(guò)命令行

進(jìn)入phoenix

cd?/home/yujianxin/hbase/phoenix/phoenix-3.0.0-incubating/bin
./sqlline.py slave3:2181

出現(xiàn)下面響應(yīng),說(shuō)明成功安裝

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_數(shù)據(jù)_04

4.2、通過(guò)Java

?

<span style="font-family:Times New Roman;">Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); 
// connection string: jdbc:phoenix [ :<zookeeper quorum> [ :<port number> ] [ :<root node> ] ]
Connection connection = DriverManager.getConnection("jdbc:phoenix:slave3:2181");</span>

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_java_05

4.3、通過(guò)SQLclientSQuirrel訪問(wèn)

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

再進(jìn)行安裝配置就可以。


五、使用Phoenix

?

使用phoenix-3.0.0-incubating.tar.gz自帶的數(shù)據(jù)進(jìn)行測(cè)試

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_java_06

當(dāng)中。WEB_STAT.sql的內(nèi)容例如以下:

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_數(shù)據(jù)_07

運(yùn)行以上命令后,查看phoenix中的表:

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_安裝配置_08

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_java_09

Phoenix支持模糊查詢:

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_sql_10

查看HBase中的表,例如以下:

Phoenix——實(shí)現(xiàn)向HBase發(fā)送標(biāo)準(zhǔn)SQL語(yǔ)句_sql_11

就可以通過(guò)Phoenix這個(gè)構(gòu)建在HBase之上的SQL中間層,向HBase發(fā)送標(biāo)準(zhǔn)sql語(yǔ)句。對(duì)HBase進(jìn)行操作。

?

?
?
?
?

本文摘自 :https://blog.51cto.com/u

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >