Apache Phoenix数据连接

编辑
  • 文档创建者:doreen0813
  • 浏览次数:1434次
  • 编辑次数:11次
  • 最近更新:doreen0813 于 2019-09-23

  • 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/dbname1.2

    2.2 连接步骤

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

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


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

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

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

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

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

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


    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,如下图:


    解决方法:

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

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



    附件列表


    主题: 数据准备
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]