使用jaydebeapi3连接到Apache Phoenix

时间:2017-03-27 11:38:58

标签: python python-3.x jdbc phoenix jaydebeapi

我有一个程序,我一直在使用由 Lukas Lalinsky 开发的phoenixdb软件包,但在过去的几天里它似乎变得非常不稳定。我认为这是由于数据库的大小(因为它不断增长)。通过不稳定,我的意思是大约一半的查询失败并出现运行时异常。

所以我继续前进并试图找到一种更稳定的方式来连接我的Phoenix“服务器”。因此,我想尝试JDBC连接。据我所知,Phoenix应该与JDBC有很好的集成。

但是我在理解如何设置初始连接方面遇到了问题。

我阅读了JayDeBeApi软件包的以下Usage部分,但我不知道驱动程序类是什么或它位于何处?如果我必须自己下载?如何设置?等等。

我希望有人在这里知道并希望详细解释。

谢谢!

编辑:

我已经设法找出我的连接语句应该是这样的:

import jaybedeapi as jdbc
conn = jdbc.connect('org.apache.phoenix.jdbc.PhoenixDriver', ['jdbc:phoenix:<ip>:<port>:', '', ''], '<location-of-phoenix-client.jar>')

但是我仍然不知道从哪里获取phoenix-client.jar文件以及如何引用它。

1 个答案:

答案 0 :(得分:3)

在设置Java项目并在该开发环境中测试JDBC并获得成功连接后,我设法找到了解决方案。

为了使JDBC连接在Java中工作,我使用了Apache here的Phoenix发行版中的JDBC驱动程序。我使用了匹配我的Phoenix和HBase版本的驱动程序 - phoenix-4.9.0-HBase-1.2-client.jar

一旦完成设置并且我可以使用Java连接到Phoenix,我就开始尝试使用Python进行设置。我开始使用以下内容连接到Phoenix:

import jaydebeapi as jdbc
import os
cwd = os.getcwd()
jar = cwd + '/phoenix-4.9.0-HBase-1.2-client.jar'
drivername = 'org.apache.phoenix.jdbc.PhoenixDriver'
url = 'jdbc:phoenix:<ip>:<port>/'
conn = jdbc.connect(drivername, url, jar)

现在我使用Python通过JDBC成功连接到Phoenix。希望将来其他人可以在将来使用这个问题。

我使用以下内容创建了一个游标,可以发出如下命令:

cursor = conn.cursor()
sql = """SELECT ...."""
cursor.execute(sql)
resp = cursor.fetchone() # could use .fetchall() or .fetchmany() if needed

我希望这有助于那里的人!