2016-03-08 90 views

回答

3

有沒有官方的Presto解釋爲飛艇,並提出了吉拉票的結論是,這是沒有必要的,因爲你可以只使用JDBC解釋

https://issues.apache.org/jira/browse/ZEPPELIN-27

我運行以後EMR與急&飛艇,和口譯的默認設置不包括JDBC,但它可以使用SSH到主節點和運行

sudo /usr/lib/zeppelin/bin/install-interpreter.sh --name jdbc

安裝

更好的是使用它作爲引導腳本。

然後你可以在Zeppelin中添加一個新的解釋器。

  1. 點擊登錄名下拉在齊柏林右上方
  2. 點擊解釋
  3. 點擊+創建

給它一個名稱,如急,這意味着你需要使用%急作爲zeppelin中段落第一行的指示,或將其設置爲默認解釋器。

你需要在這裏的設置是:

default.drivercom.facebook.presto.jdbc.PrestoDriver

default.urljdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889

default.userhadoop

注意有沒有提供,因爲EMR環境應該使用IAM角色密碼,PPK密鑰等進行認證。

您還需要一個用於presto JDBC驅動程序jar的依賴項。有幾種方法可以在Zeppelin中添加依賴項,但一種簡單的方法是通過解碼器設置中的參考文件Dependencies

artifact

com.facebook.presto:presto-jdbc:0.170

注意版本0.170對應的Presto的版本目前已經部署在EMR,這將改變未來。您可以在AWS EMR設置中看到正在將哪個版本部署到羣集中。

您還可以得到飛艇直接連接到一個目錄,或目錄&架構通過將附加到default.url JDBC驅動程序 https://prestodb.io/docs/current/installation/jdbc.html

例如設置 按照通過Presto文檔作爲一個例子,使用的Presto與具有數據庫的蜂房metastore稱爲datakeep

jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889/hive

OR

jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889/hive/datakeep

UPDATE 2018年2月

EMR 5.11.1是使用Presto 0.187,並且Zeppelin解釋器向Presto Driver提供屬性的方式存在問題,導致類似的錯誤

目前唯一的解決辦法出現在神器被使用的舊版本,或者手動上傳補丁似的司機 使用舊參照司機見https://github.com/prestodb/presto/issues/9254https://issues.apache.org/jira/browse/ZEPPELIN-2891

在我的例子(顯然必須比0.180更早)例如com.facebook.presto:presto-jdbc:0.179沒有工作,齊柏林給了我一個關於無法下載依賴關係的錯誤。有趣的錯誤,但可能與Zeppelin的本地Maven回購沒有包含這一點,不知道我放棄了。

我可以確認補丁驅動程序工作。

  • (假設你已經安裝了Java &行家)
  • 克隆的急板GitHub庫
  • 結帳釋放標籤例如git checkout 0.187
  • 進行編輯按這個補丁https://groups.google.com/group/presto-users/attach/1231343dbdd09/presto-jdbc.diff
  • 構建使用mvn clean package
  • 複製的jar到飛艇機某處飛艇用戶罐子都有閱讀權限。
  • 在解釋器中,在Dependencies-Artifacts部分下,而不是Maven引用使用該jar文件的絕對路徑。
  • 將用戶傳遞給presto驅動程序似乎存在問題,因此只需將其作爲url參數添加到「default.url」jdbc連接字符串中即可。 jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889?user=hadoop

啓動並運行。同時,可能值得考慮的是雅典娜作爲Presto的替代品,因爲它無服務器&實際上只是Presto的一個分支。它僅限於外部配置單元表,並且它們必須在Athena自己​​的目錄中創建(或者現在在AWS Glue目錄中,也限制爲外部表)。