2017-03-27 62 views
1

我有一個程序,其中我一直使用由Lukas Lalinsky開發的phoenixdb軟件包,但在過去幾天裏它似乎變得非常不穩定。我認爲這是由於數據庫的大小(因爲它不斷增長)。由於不穩定,我的意思是大約一半的查詢失敗,出現運行時異常。使用jaydebeapi3連接到Apache Phoenix

所以我繼續前進,並試圖找到一個更穩定的方式來連接我的鳳凰「服務器」。因此我想嘗試一個JDBC連接。據我瞭解,鳳凰應該與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文件以及如何參考它。

+0

您對Java和JDBC的熟悉程度如何?我建議將Python放在一邊,並獲得一些與你的Phoenix數據庫一起工作的簡單Java類。一旦完成並開始工作,轉向JayDeBeApi應該很簡單。 –

+0

我對Java非常熟悉,但是JDBC在我的聯盟中有點不合適。我的問題是我不知道給JayDeBeApi.connect語句的輸入。據我所能從我的谷歌搜索能夠收集我可以使用稱爲JPype的東西,包括我的Java類,但這證明有點麻煩安裝在Windows上.. – Zeliax

+0

在這種情況下,首先學習JDBC。一旦你學習了JDBC,你就會明白要傳給JayDeBeApi的東西。如果他們不知道JDBC,我不相信這裏的任何人會想幫助別人使用JayDeBeApi。 –

回答

2

在設置Java項目並在該開發環境中測試JDBC並獲得成功連接後,我設法找到解決方案。

要使用Java工作的JDBC連接,我使用了Apache here的Phoenix發行版中的JDBC驅動程序。我使用了匹配我的Phoenix和HBase版本的驅動程序 - phoenix-4.9.0-HBase-1.2-client.jar

一旦完成設置並且我可以使用Java連接到Phoenix,我開始嘗試使用Python進行設置。我開始連接到鳳凰與以下幾點:

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) 

現在我通過JDBC成功連接到鳳凰使用Python。希望未來有人可以使用這個問題。

我使用以下類似以下內容並可以發出命令創建一個光標:

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

我希望這有助於有人出來!

+0

它應該沒有必要導入和設置jpype。 jaydebeapi爲你做了這一切。你能否檢查一下並更新你的答案。此外,shutdownJVM命令不起作用。 AFAIK這是一個從未被修復的JVM錯誤。 – bastian

+0

是的。我注意到jvm關機不起作用。我會嘗試查看是否需要JPype。一旦我測試過,我會返回。 – Zeliax

+0

@bastian我沒有改變我的答案,以說明JPype不需要,並測試它不是。但是我發現它有點奇怪,因爲它在我安裝JPype之前似乎沒有用於我的初始測試。但現在它確實如此,嗯。 – Zeliax