数据库管理工具DataGrip和idea、PyCharm等连接Phoenix

1 背景

Phoenix是基于Hbase的数据库工具,它允许使用SQL和标准的JDBC api查询Hbase中的数据。使用它可以在不了解hbase api的基础上使用标准的SQL对hbase中的数据进行查询、更改、插入等操作。

但是,目前网络上关于使用数据库连接工具连接Phoenix文章比较少,并且使用的都是SQuirrel(官方推荐),但是笔者一直没有尝试成功。后来笔者在DataGrip上测试成功了。在此将过程记录下来。idea和Pycharm的的连接方法与DataGrip类似,以下以DataGrip为例。

2 驱动的下载和Phoenix的安装

Phoenix的安装
由于我使用的是服务器上的Phoenix服务,所以在这里就不介绍Phoenix的安装了,Phoenix的具体安装方法参考官方文档

JDBC驱动的下载
下载地址(直接下载二进制版本即可): https://phoenix.apache.org/download.html
需要注意的是版本必须与自己使用的Phoenix版本一致。
如需下载旧版本的Phoenix可以去这里下载https://archive.apache.org/dist/phoenix/

下载完成之后解压文件,其中phoenix-xxx-client.jar的文件就是JDBC的驱动文件。

驱动文件

3 在DataGrip上添加Phoenix

3.1 添加Driver

按照如下的步骤添加Phoenix驱动:

  1. 设置驱动的名字
  2. 点击+添加已经下载好的驱动文件
  3. 直接从下拉菜单中选择org.apache.phoenix.jdbc.PhoenixDriver或者直接输入
  4. 点击确认即可添加成功
添加Phoenix驱动

3.2 添加数据源

  1. 按照如下的路径点击添加


    添加Data Source
  2. 按照如下进行设置


    设置连接属性
  1. 错误解决
    (1)如果出现如下的报错,则需要设置属性(properties): phoenix.schema.isNamespaceMappingEnabled的值设置为true
[43M10][726] ERROR 726 (43M10):  Inconsistent namespace mapping properties.
Cannot initiate connection as SYSTEM:CATALOG is found but client 
does not have phoenix.schema.isNamespaceMappingEnabled enabled

设置方法如下:


设置properties

(2) 如果出现如下的两种错误,是由于datagrip的启动jdk版本太高,需要修改启动jdk的版本

[08004][103] ERROR 103 (08004): Unable to establish connection. 
Unexpected version format: 11.0.3.
[08004][103] ERROR 103 (08004): Unable to establish connection. 
Could not initialize class org.apache.hadoop.hbase.util.ClassSize.

方案一:2019.2版本及之前版本的修改方法如下:

  • a) 点击Navigate-Table/Rouete/Class
    切换JDK-1
  • b) 点击Actions,输入Switch Boot JDK,并点击如下选项
    切换JDK-2
  • c) 选择一个较低版本的jdk(如1.8)


    选择一个较低版本的JDK

方案二:2019.2之后的版本如果找不到上述的选项,尝试如下方法:

4 注意事项

  1. 设置phoenix.schema.isNamespaceMappingEnabled这一步很关键,如果出现相应的错误一定要设置这个属性;

  2. 如果按照以上的步骤还是报错,请检查Phoenix的驱动版本是否与使用的Phoenix的版本一致。如果在官网上找不到低版本的驱动,可以去这里下载:https://archive.apache.org/dist/phoenix/

  3. 其他的数据库管理工具类似,关键是需要设置phoenix.schema.isNamespaceMappingEnabled

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。