2

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

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

但是,我在理解如何设置初始连接方面确实存在问题。

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

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

谢谢!

编辑:

我设法弄清楚我的连接语句应该是这样的:

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

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

4

1 回答 1

3

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

为了让 JDBC 连接在 Java 中工作,我使用了 Apache 的 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

我希望这可以帮助那里的人!

于 2017-03-30T07:04:39.930 回答