使用 jaydebeapi3 连接到 Apache Phoenix

Using jaydebeapi3 to connect to Apache Phoenix

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

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

有很好的整合

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

我阅读了 JayDeBeApi 包的以下 Usage 部分,但我不知道 Driver Class 是什么或它位于何处?如果我必须自己下载呢?如何设置?等等。

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

谢谢!

编辑:

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

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

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

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

为了使 JDBC 连接在 Java 中正常工作,我使用了 JDBC 驱动程序,该驱动程序在 Apache here 的 Phoenix 发行版中找到。我使用了与我的 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

我希望这对外面的人有帮助!