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 |
GroupId | ArtifactId | Latest Version |
---|---|---|
com.aliyun.phoenix | ali-phoenix-queryserver-client | 5.2.5-HBase-2.x |
com.aliyun.phoenix | ali-phoenix-shaded-thin-client | 5.2.5-HBase-2.x |
避免轻客户端中包与业务三方包冲突,推荐使用轻客户端shade包。
在启用query-server的时候需要使用轻客户端,否则使用重客户端。ali-phoenix不支持以keytab的方式访问云HBASE,所以此处和apache phoenix的JDBC格式有所差异
重客户端DRIVE
URL语法
jdbc:phoenix:[[ZK_HOST1:port, ZK_HOST2:port, ZK_HOST3:port | comma-separated ZooKeeper Quorum [:port] [:hbase root znode] ]
简单URL示例
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
轻客户端DRIVE
URL语法
jdbc:phoenix:thin:[key=value[;key=value...]]
简单URL示例
jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF
HBase1.x版本使用Phoenix4.x重客户端模式,需要用户自行搭建QueryServer服务。
HBase2.0版本增加HBase SQL服务,默认开启QueryServer。
当前云HBASE上的ali-phoenix此不支持,此功能正在开发中
HBase1.0上Phoenix4.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>
HBase2.0上Phoenix5.x版本,可在控制台参数管理中修改上述参数,并重启HBase SQL服务,注意不需要重启HBase,仅重启HBase SQL服务(Phoenix)即可。
注意:Phoenix5.x集群中调整超时参数会对线上访问造成影响,推荐采用重客户端或者MR集群构建索引,参考:https://developer.aliyun.com/article/768438?groupCode=hbasespark
4.x开通步骤:
1). 在客户端增加以下配置, 2).找云 HBase 答疑开通 Server 端参数, 3). 重启 HBase 集群。
<configuration>
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
</configuration>
5.x开通步骤:
1). 控制台 -> 参数配置,配置phoenix.schema.isNamespaceMappingEnabled
和 phoenix.schema.mapSystemTablesToNamespace
为 true。 2). 重启 HBase 集群。 3). 重启 SQL 服务。
注意: 这里需要配置两组相同的参数,参数描述是不相同的,一组是 query server 的,一组是 HBase server 端的,都需要设置。
Phoenix4.x最新版本的4.12.0.X版本支持,具体参考PhoenixConnectionPool.java
Phoenix5.x版本基于轻客户端实现,PhoenixConnectionPool.java
不能使用,建议使用社区第三方连接池,比如mybatis,可参考链接池demo
不能断开客户端链接。执行create index主要有两个步骤,第一步在server端同步源表数据到索引表, 第二步在客户端发起请求修改索引表状态设置为active。其中第一步一般是客户端发起请求在server端完成后。
一般情况下1000W数据创建索引需要5-20min, 具体情况视集群配置和资源使用情况而定。
一般情况下当前索引表的状态是building状态的(可以在sqlline中使用 !table命令查看),只有当索引表状态变为active才算真正完成了索引构建。此时有两种解决方法:第一、通过alter index命令rebuild索引。第二、删除building状态的索引表,配置更大的客户端超时时间,重新创建索引。
通过datax(https://github.com/alibaba/DataX)或者CDP, Phoenix4.x可利用hbase11xsqlwriter插件写入到Phoenix表中,其中zk的zookeeper.znode.parent配置值为/hbase。Phoenix5.x可使用hbase20xsqlwriter插件写入到Phoenix表中.
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服务即可。
java.sql.SQLException: java.lang.IllegalArgumentException: Connection is null or closed.
由于Phoenix内部会缓存链接,上层再使用一层连接池时,会出现部分链接被关闭的情况,所以目前不推荐使用此类方式。你可以尝试当前版本自带的连接池,参考问题10。
phoenixdb.errors.InternalError: ('', None, None, None)
由于开源python客户端未实现连接空闲超时重建机制,通过SLB负载均衡连接超时后再次请求发送到其他QueryServer节点导致。
解决办法:
rm -rf /usr/lib/python${version}/site-packages/phoenixdb*
python setup.py install
暂时不支持,包括grant,revoke命令。
在文档使用中是否遇到以下问题
更多建议
匿名提交