全部产品
阿里云办公

Phoenix FAQ

更新时间:2018-07-12 16:03:53

1. ali-phoenix最新版本在maven中央仓库发布了哪些jar包?

4.11版本
GroupId ArtifactId Latest Version
com.aliyun.phoenix ali-phoenix 4.11.0-AliHBase-1.1-0.3
com.aliyun.phoenix ali-phoenix-hive 4.11.0-AliHBase-1.1-0.3
com.aliyun.phoenix ali-phoenix-spark 4.11.0-AliHBase-1.1-0.3
com.aliyun.phoenix ali-phoenix-pherf 4.11.0-AliHBase-1.1-0.3
com.aliyun.phoenix ali-phoenix-queryserver 4.11.0-AliHBase-1.1-0.3
com.aliyun.phoenix ali-phoenix-queryserver-client 4.11.0-AliHBase-1.1-0.3
com.aliyun.phoenix ali-phoenix-pig 4.11.0-AliHBase-1.1-0.3
com.aliyun.phoenix ali-phoenix-flume 4.11.0-AliHBase-1.1-0.3
com.aliyun.phoenix ali-phoenix-core 4.11.0-AliHBase-1.1-0.3
最新4.12版本
GroupId ArtifactId Latest Version
com.aliyun.phoenix ali-phoenix 4.12.0-AliHBase-1.1-0.4-Final
com.aliyun.phoenix ali-phoenix-hive 4.12.0-AliHBase-1.1-0.4-Final
com.aliyun.phoenix ali-phoenix-spark 4.12.0-AliHBase-1.1-0.4-Final
com.aliyun.phoenix ali-phoenix-pherf 4.12.0-AliHBase-1.1-0.4-Final
com.aliyun.phoenix ali-phoenix-queryserver 4.12.0-AliHBase-1.1-0.4-Final
com.aliyun.phoenix ali-phoenix-queryserver-client 4.12.0-AliHBase-1.1-0.4-Final
com.aliyun.phoenix ali-phoenix-pig 4.12.0-AliHBase-1.1-0.4-Final
com.aliyun.phoenix ali-phoenix-flume 4.12.0-AliHBase-1.1-0.4-Final
com.aliyun.phoenix ali-phoenix-core 4.12.0-AliHBase-1.1-0.4-Final

2. 操作ali-phoenix需要掌握哪些语法?

如果使用JDBC访问需要了解相应的phoenix语法,如果使用sqlline.py访问还需要了解SQLLine语法。具体可以参考以下文档:

3. ali-phoenix 是否支持访问开安全的云HBASE?

此版本暂时不支持,下一个版本将会以用户名和密码的方式支持安全访问云hbase。

4. ali-phoenix JDBC URL格式是什么样的?

在启用query-server的时候需要使用轻客户端,否则使用重客户端。ali-phoenix不支持以keytab的方式访问云HBASE,所以此处和apache phoenix的JDBC格式有所差异

  • 重客户端DRIVE

    URL语法

    1. jdbc:phoenix:[comma-separated ZooKeeper Quorum [:port [:hbase root znode] ]

    简单URL示例

    1. jdbc:phoenix:localhost
  • 轻客户端DRIVE

    URL语法

    1. jdbc:phoenix:thin:[key=value[;key=value...]]

    简单URL示例

    1. jdbc:phoenix:thin:url=http://localhost:8765

5. 是否支持QueryServer?

当前云HBASE上的ali-phoenix此不支持,此功能正在开发中。

6. 是否支持Tracing Web Application?

当前云HBASE上的ali-phoenix此不支持,此功能正在开发中

7. 怎么通过MR对phoenix表bulkload数据或者构建索引?

因目前云hbase没有开通hdfs端口。所以暂时不支持通过mr构建索引或者数据入库。如有强需求可联系我们。

8.构建同步的二级索引超时怎么办?

需要在客户加上如下配置,并重启客户端。

  1. <property>
  2. <name>hbase.rpc.timeout</name>
  3. <value>60000000</value>
  4. </property>
  5. <property>
  6. <name>hbase.client.scanner.timeout.period</name>
  7. <value>60000000</value>
  8. </property>
  9. <property>
  10. <name>phoenix.query.timeoutMs</name>
  11. <value>60000000</value>
  12. </property>

9.是否支持Namespace Mapping

暂时未开通此功能

10.是否支持连接池

最新版本的4.12.0.X版本支持,具体参考PhoenixConnectionPool.java

11. 二级索引应该使用local Index还是global Index?

实现上,一个global index表对应着一个hbase 表,local index是在主表上新增一列存储索引数据。

适用场景上,global index 适用于多读的场景,但存在同步索引时带来网络开销较大的问题。而local由于和原数据存储在一张表中同步索引数据会相对快一点。

虽然local index也有一定适用场景,但仍然推荐使用global index, 其原因有以下几点:

  1. 当前版本的phoneix的local index的实现相对global index不太完善,有许多不足。使用存在一定的风险。
  2. local index功能一旦改进后,升级流程相对复杂。
  3. 大多数用户使用二级索引是为了分析,而在大数据量下使用glboal index会有更多的优势。

在以后的版本中会禁止local index的使用(可以通过配置开关enable,默认disable)。

12.索引表最多可以创建多少个?

建议不超过10个

13.客户端配置修改后需要重启吗?

不需要

14.Phoenix默认时区是什么?

默认GMT,在中国需要转换为UTC+8。

15.执行创建索引时间太长能否断开开户端链接?

不能断开客户端链接。执行create index主要有两个步骤,第一步在server端同步源表数据到索引表, 第二步在客户端发起请求修改索引表状态设置为active。其中第一步一般是是客户端发起请求在server端完成后。

16.通过Phoenix映射的HBase表创建的索引表怎样同步索引表?

直接通过HBase API写入的数据不能同步到索引表中,只有通过Phoenix接口写入的数据才会被同步到索引表中。

17.多大数据量推荐使用MapReduce构建索引?

数据量超过1亿行,推荐使用MapReudce构建索引。

18.创建同步索引表,同步索引数据的速度怎么样?

一般情况下1000W数据创建索引需要5-20min, 具体情况视集群配置和资源使用情况而定。

19.创建索引由于时间太长,客户端断开了链接怎么办?

一般情况下当前索引表的状态是building状态的(可以在sqlline中使用 !table命令查看),只有当索引表状态变为active才算真正完成了索引构建。此时有两种解决方法:第一、通过alter index命令rebuild索引。第二、删除building状态的索引表,配置更大的客户端超时时间,重新创建索引。

20.关系型数据库怎么导入云HBASE的phoenix表中?

通过datax(https://github.com/alibaba/DataX)或者CDP, 利用hbase11xsqlwriter插件写入到Phoenix表中,其中zk的zookeeper.znode.parent配置值为/hbase.

21. 查询时发生遇到ERROR 599(42912): Default enable Force index, please set phoenix.force.index=false to disable it...., 应该怎么处理?

为了避免查询扫全表,会在SQL编译阶段,检查查询条件是否有主键或者索引列作为过滤条件,如果没有会产生此异常。如果查询确实需要非主键或非索引列作为过滤条件的列,可以在客户端的hbase-site.xml文件中配置phoenix.force.indexfalse,重新打开客户端,即可生效。

22. 通过springboot使用durid连接池报java.sql.SQLException: java.lang.IllegalArgumentException: Connection is null or closed.

由于Phoenix内部会缓存链接,上层再使用一层连接池时,会出现部分链接被关闭的情况,所以目前不推荐使用此类方式。你可以尝试当前版本自带的连接池,参考问题10。

本文导读目录