历史版本15 :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/dbnameApache Phoenix的驱动包1.2

注:这个数据库 JAR 包容易和其他 Hadoop 系列的 JAR 包冲突(Hadoop、hive、impala、星环等等),如果连不上,要删除冲突的数据库的 JAR。


2.2 连接步骤

  1. 从上面下载链接中下载 Apache Phoenix 驱动包,并将该驱动包放置到%FineBI%\webapps\webroot\WEB-INF\lib下,重启FineBI 。

  2. 登录数据决策系统,选择管理系统>数据连接>数据连接管理,点击新建数据连接,在所有选项下选择Apache Phoenix,如下图所示:

    phonix bi.png

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

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

    注:连接前请检查 /etc/hosts 中的机器名对应 IP 是否为局域网 IP;

    检查 /etc/hostname 中机器名设置和 /etc/hosts 中是否配置一致;

    检查 FineBI 所在机器 hosts 配置的 IP+ 机器名是否正确。

    本地连接时需要配置 /etc/hosts 文件,添加远端映射:IP+机器名,例如: 192.168.5.206  centos-phoenix。

    1574391865921108.png

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

    1574391951652892.png

  4. 点击测试连接,或者在模式下点击连接数据库,若测试连接成功则表示成功连接上数据库,如下图所示:

    1575345937693904.png

  5. 测试连接成功后可以选择模式,根据需要选择对应模式,若不进行选择,则默认为第一个模式。如下图所示:

    1574392528574674.png

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

    1574392621515321.png

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"

解决方法:

报错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>