本文檔介紹了您在使用HBase SQL(Phoenix)過程中遇到的常見問題並給出解決辦法。
ali-phoenix最新版本在Maven中央倉庫發布了哪些JAR包?
- ali-phoenix 4.x發布包如下:
GroupId ArtifactId Latest Version com.aliyun.phoenix ali-phoenix 4.12.0-AliHBase-1.1-0.9 com.aliyun.phoenix ali-phoenix-hive 4.12.0-AliHBase-1.1-0.9 com.aliyun.phoenix ali-phoenix-spark 4.12.0-AliHBase-1.1-0.9 com.aliyun.phoenix ali-phoenix-pherf 4.12.0-AliHBase-1.1-0.9 com.aliyun.phoenix ali-phoenix-queryserver 4.12.0-AliHBase-1.1-0.9 com.aliyun.phoenix ali-phoenix-queryserver-client 4.12.0-AliHBase-1.1-0.9 com.aliyun.phoenix ali-phoenix-pig 4.12.0-AliHBase-1.1-0.9 com.aliyun.phoenix ali-phoenix-flume 4.12.0-AliHBase-1.1-0.9 com.aliyun.phoenix ali-phoenix-core 4.12.0-AliHBase-1.1-0.9 - ali-phoenix 5.x發布包如下:
GroupId ArtifactId Latest Version com.aliyun.phoenix ali-phoenix-shaded-thin-client 5.2.5-HBase-2.x com.aliyun.phoenix ali-phoenix-shaded-thin-client 5.2.5-HBase-2.x 說明 避免輕用戶端中包與業務三方包衝突,推薦使用輕用戶端shade包。
ali-phoenix JDBC URL格式是什麼樣的?
- 重用戶端DRIVEphoenixURL文法
簡單URL樣本jdbc:phoenix:[[ZK_HOST1:port, ZK_HOST2:port, ZK_HOST3:port | comma-separated ZooKeeper Quorum [:port] [:hbase root znode] ]jdbc:phoenix:localhost jdbc:phoenix:localhost:123:/hbase jdbc:phoenix:v1,v2,v3:123:/hbase jdbc:phoenix:v1:2181,v2:2181,v3:2181:/hbase jdbc:phoenix:v1:2181,v2:2181,v3:2181 - 輕用戶端DRIVEURL文法
jdbc:phoenix:thin:[key=value[;key=value...]]簡單URL樣本jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF
是否支援QueryServer?
- HBase1.x版本使用Phoenix4.x重用戶端模式,需要使用者自行搭建QueryServer服務。
- HBase2.0版本增加HBase SQL服務,預設開啟QueryServer。
是否支援Tracing Web Application?
當前雲HBase上的ali-phoenix此不支援,此功能正在開發中。
構建同步的二級索引逾時怎麼辦?
<property>
<name>hbase.rpc.timeout</name>
<value>60000000</value>
</property>
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>60000000</value>
</property>
<property>
<name>phoenix.query.timeoutMs</name>
<value>60000000</value>
</property>HBase2.0上Phoenix5.x版本,可在控制台參數管理中修改上述參數,並重啟HBase SQL服務,注意不需要重啟HBase,僅重啟HBase SQL服務(Phoenix)即可。如何開通Namespace Mapping?
- 4.x開通步驟
- 在用戶端增加以下配置。
<property> <name>hbase.rpc.timeout</name> <value>60000000</value> </property> <property> <name>hbase.client.scanner.timeout.period</name> <value>60000000</value> </property> <property> <name>phoenix.query.timeoutMs</name> <value>60000000</value> </property> - 找雲HBase 答疑開通Server端參數。
- 重啟HBase叢集。
- 在用戶端增加以下配置。
- 5.x開通步驟
- 登入控制台。
- 參數配置。
phoenix.schema.isNamespaceMappingEnabled和phoenix.schema.mapSystemTablesToNamespace配置為 true - 重啟 HBase 叢集。
- 重啟 SQL 服務。
說明 這裡需要配置兩組相同的參數,參數描述是不相同的,一組是query server,一組是HBase server端的,都需要設定。
是否支援串連池?
Phoenix4.x最新版本的4.12.0.X版本支援,具體參考PhoenixConnectionPool.java。
Phoenix5.x版本基於輕用戶端實現,PhoenixConnectionPool.java不能使用,建議使用社區第三方串連池,比如mybatis,可參考相關參考。
執行建立索引時間太長能否斷開用戶端連結?
不能斷開用戶端連結。執行create index主要有兩個步驟,第一步在server端同步源表資料到索引表, 第二步在用戶端發起請求修改索引表狀態設定為active。其中第一步一般是用戶端發起請求在server端完成後。
建立同步索引表,同步索引資料的速度怎麼樣?
一般情況下1000W資料建立索引需要5~20min, 具體情況視叢集配置和資源使用方式而定。
建立索引由於時間太長,用戶端斷開了連結怎麼辦?
- 通過
alter index命令rebuild索引。 - 刪除building狀態的索引表,配置更大的用戶端逾時時間,重新建立索引。
關係型資料庫怎麼匯入雲HBase的phoenix表中?
通過datax匯入,具體操作請參見樣本參考。
查詢時發生遇到ERROR 599(42912): Default enable Force index, please set phoenix.force.index=false to disable it...., 應該怎麼處理?
為了避免查詢掃全表,會在SQL編譯階段,檢查查詢條件是否有主鍵或者索引列作為過濾條件,如果沒有會產生此異常。如果查詢確實需要非主鍵或非索引列作為過濾條件的列,phoenix4.x版本可以在用戶端的hbase-site.xml檔案中配置phoenix.force.index為false,重新開啟用戶端,即可生效。Phoenix5.x在控制台參數管理中修改phoenix.force.index為false,重啟HBase SQL服務即可。
通過springboot使用druid串連池報java.sql.SQLException: java.lang.IllegalArgumentException: Connection is null or closed應該怎麼處理?
由於Phoenix內部會緩衝連結,上層再使用一層串連池時,會出現部分連結被關閉的情況,所以目前不推薦使用此類方式。
使用python用戶端串連QueryServer時,串連閑置一段時間後再進行讀寫時報錯phoenixdb.errors.InternalError: ('', None, None, None)
- 下載阿里phoenix-python用戶端,單擊下載。
- 如果已安裝phoenix-python驅動,需要執行如下命令進行刪除。
rm -rf /usr/lib/python${version}/site-packages/phoenixdb* - 解壓後在phoenixdb目錄執行如下命令安裝驅動。
python setup.py install
Phoenix是否支援多租戶?
暫不支援,包括grant和revoke命令。