1 背景
Phoenix是基于Hbase的數(shù)據(jù)庫工具,它允許使用SQL和標(biāo)準(zhǔn)的JDBC api查詢Hbase中的數(shù)據(jù)。使用它可以在不了解hbase api的基礎(chǔ)上使用標(biāo)準(zhǔn)的SQL對hbase中的數(shù)據(jù)進行查詢、更改、插入等操作。
但是,目前網(wǎng)絡(luò)上關(guān)于使用數(shù)據(jù)庫連接工具連接Phoenix文章比較少,并且使用的都是SQuirrel(官方推薦),但是筆者一直沒有嘗試成功。后來筆者在DataGrip上測試成功了。在此將過程記錄下來。idea和Pycharm的的連接方法與DataGrip類似,以下以DataGrip為例。
2 驅(qū)動的下載和Phoenix的安裝
Phoenix的安裝
由于我使用的是服務(wù)器上的Phoenix服務(wù),所以在這里就不介紹Phoenix的安裝了,Phoenix的具體安裝方法參考官方文檔
JDBC驅(qū)動的下載
下載地址(直接下載二進制版本即可): https://phoenix.apache.org/download.html
需要注意的是版本必須與自己使用的Phoenix版本一致。
如需下載舊版本的Phoenix可以去這里下載https://archive.apache.org/dist/phoenix/
下載完成之后解壓文件,其中phoenix-xxx-client.jar的文件就是JDBC的驅(qū)動文件。

3 在DataGrip上添加Phoenix
3.1 添加Driver
按照如下的步驟添加Phoenix驅(qū)動:
- 設(shè)置驅(qū)動的名字
- 點擊+添加已經(jīng)下載好的驅(qū)動文件
- 直接從下拉菜單中選擇
org.apache.phoenix.jdbc.PhoenixDriver或者直接輸入 - 點擊確認(rèn)即可添加成功

3.2 添加數(shù)據(jù)源
-
按照如下的路徑點擊添加
添加Data Source -
按照如下進行設(shè)置
設(shè)置連接屬性
- 錯誤解決
(1)如果出現(xiàn)如下的報錯,則需要設(shè)置屬性(properties):phoenix.schema.isNamespaceMappingEnabled的值設(shè)置為true
[43M10][726] ERROR 726 (43M10): Inconsistent namespace mapping properties.
Cannot initiate connection as SYSTEM:CATALOG is found but client
does not have phoenix.schema.isNamespaceMappingEnabled enabled
設(shè)置方法如下:

(2) 如果出現(xiàn)如下的兩種錯誤,是由于datagrip的啟動jdk版本太高,需要修改啟動jdk的版本
[08004][103] ERROR 103 (08004): Unable to establish connection.
Unexpected version format: 11.0.3.
[08004][103] ERROR 103 (08004): Unable to establish connection.
Could not initialize class org.apache.hadoop.hbase.util.ClassSize.
方案一:2019.2版本及之前版本的修改方法如下:
- a) 點擊
Navigate-Table/Rouete/Class
切換JDK-1 - b) 點擊
Actions,輸入Switch Boot JDK,并點擊如下選項
切換JDK-2 -
c) 選擇一個較低版本的jdk(如1.8)
選擇一個較低版本的JDK
方案二:2019.2之后的版本如果找不到上述的選項,嘗試如下方法:
- a) 下載并安裝低版本的jdk(如1.8,1.8下載地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
) -
b)修改Phoenix驅(qū)動使用的java版本,如下圖所示
修改jdk版本
4 注意事項
設(shè)置
phoenix.schema.isNamespaceMappingEnabled這一步很關(guān)鍵,如果出現(xiàn)相應(yīng)的錯誤一定要設(shè)置這個屬性;如果按照以上的步驟還是報錯,請檢查Phoenix的驅(qū)動版本是否與使用的Phoenix的版本一致。如果在官網(wǎng)上找不到低版本的驅(qū)動,可以去這里下載:https://archive.apache.org/dist/phoenix/
其他的數(shù)據(jù)庫管理工具類似,關(guān)鍵是需要設(shè)置
phoenix.schema.isNamespaceMappingEnabled。





