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驱动:
- 设置驱动的名字
- 点击+添加已经下载好的驱动文件
- 直接从下拉菜单中选择
org.apache.phoenix.jdbc.PhoenixDriver
或者直接输入 - 点击确认即可添加成功
3.2 添加数据源
-
按照如下的路径点击添加
-
按照如下进行设置
- 错误解决
(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
设置方法如下:
(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
- b) 点击
Actions
,输入Switch Boot JDK
,并点击如下选项
-
c) 选择一个较低版本的jdk(如1.8)
方案二:2019.2之后的版本如果找不到上述的选项,尝试如下方法:
- a) 下载并安装低版本的jdk(如1.8,1.8下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
) -
b)修改Phoenix驱动使用的java版本,如下图所示
4 注意事项
设置
phoenix.schema.isNamespaceMappingEnabled
这一步很关键,如果出现相应的错误一定要设置这个属性;如果按照以上的步骤还是报错,请检查Phoenix的驱动版本是否与使用的Phoenix的版本一致。如果在官网上找不到低版本的驱动,可以去这里下载:https://archive.apache.org/dist/phoenix/
其他的数据库管理工具类似,关键是需要设置
phoenix.schema.isNamespaceMappingEnabled
。