历史版本8 :Apache Phoenix数据连接 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1、描述编辑

Apache Phoenix通过结合联机事务处理和hadoop运行分析平台的完美结合来针对低延迟应用程序,它支持标准SQL和有包含事务的原子性、隔离性、一致性、持久性的JDBC API的能力,并且后期绑定灵活,基于NoSQL世界的读时模式,以HBase作为后台存储。本章我们将介绍如何在FineBI中连接Apache Phoenix数据库。

2、数据连接编辑

2.1 配置信息
驱动    URL
     org.apache.phoenix.jdbc.PhoenixDriver      jdbc:phoenix:ip:port/dbname
2.2 连接步骤

下载Apache Phoenix的驱动包,并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下,重启FineBI。

登录FineBI数据决策系统,选择管理系统>数据连接,点击新建数据连接选择更多数据连接,并在弹出框中选择Apache Phoenix,如下图:

      222

      222

点击确定进入数据连接配置页面,按照前面提供的配置信息,输入自身数据库的对应信息。

可选择勾选kerberos认证。若勾选kerberos认证,则需填入注册过kdc的客户端名称、keytab密钥路径和Kerberos认证对应URL,参考数据连接Kerberos认证,如下图:

      222

若不勾选kerberos认证,则跟其他数据库设置一致,可选择填入连接池属性信息(连接池属性介绍可参考配置数据连接),如下图:

      222

点击第二步测试连接若出现如下图的测试连接成功弹出框,则表示成功连接上数据库。

      222

测试连接成功后才可以选择模式,根据需求选择对应模式,若不进行选择,则默认为第一个模式。

      222

模式选择后点击右上角的保存按钮,该数据连接即添加成功。如下图:

      222

3、注意事项编辑

3.1 注意事项:

1、A join B on A.a=B.b,A B不支持子查询。可能导致引擎开启实时数据时的关联无法正常使用, 只能走内存化;

2、多层嵌套可能会sql报错,如果用户原本的sql数据集已经有sql嵌套, 引擎开启实时数据时的查询可能会出现问题。例如 select T_2.a from ( select T_1.a from ( select * from A) T_1 ) T_2 会报错。


3.2 报错解决方案 

报错1: 

jdbc访问数据库无法连接, 提示get locations错误或者zookeeper找不到对应的地址

解决方法: 

检查如下位置的配置,/etc/hosts 中的机器名对应IP是否为局域网IP;/etc/hostname中机器名设置和/etc/hosts中是否配置一致;BI所在机器hosts配置的IP+机器名是否正确。


报错2: 

BI测试连接失败, 报错 "Caused by: java.sql.SQLException: org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator"

解决方法:

将guava包替换为 guava-16.0.1.jar


报错3:

BI测试连接失败,报错:ERROR 726 (43M10):  Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabledERROR 726 (43M10):  Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled,如下图:

222

解决方法:

如果使用了hbase中的自定义namespace,不仅仅使用default,那么在phoenix中与之对应的是schema的概念。但是默认并没有开启,需要在hbase-site.xml中增加以下配置项:

222

<property> <name>phoenix.schema.isNamespaceMappingEnabled</name> <value>true</value> </property> <property> <name>phoenix.schema.mapSystemTablesToNamespace</name> <value>true</value> </property>