2016-11-21 27 views
0

我正嘗試使用通用JDBC解釋器從Zeppelin連接到prestodb。這裏的配置:prestodb JDBC解釋器引發NullPointerException

presto %jdbc (default) 
Option Shared 

Properties 
name value 
default.driver com.facebook.presto.jdbc.PrestoDriver 
default.url  jdbc:presto://presto:8080 
default.user presto 
zeppelin.jdbc.concurrent.max_connection  10 
zeppelin.jdbc.concurrent.use true 
Dependencies 
artifact exclude 
/zeppelin/interpreter/jdbc/presto-jdbc-0.157.jar 

我可以成功連接並使用CLI查詢:

./presto --server presto:8080

但是當我嘗試使用筆記本段內的任何查詢,我得到:

null 
class java.lang.NullPointerException 
org.apache.zeppelin.jdbc.JDBCInterpreter.getMaxResult(JDBCInterpreter.java:471) 
org.apache.zeppelin.jdbc.JDBCInterpreter.executeSql(JDBCInterpreter.java:307) 
org.apache.zeppelin.jdbc.JDBCInterpreter.interpret(JDBCInterpreter.java:408) 
org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:94) 
org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:341) 
org.apache.zeppelin.scheduler.Job.run(Job.java:176) 
org.apache.zeppelin.scheduler.ParallelScheduler$JobRunner.run(ParallelScheduler.java:162) 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
java.util.concurrent.FutureTask.run(FutureTask.java:266) 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 

我的JDBC解釋器配置中是否缺少某些東西?

+0

我的猜測是開源Presto JDBC驅動程序缺少Zeppelin調用的某種方法的實現。您可以檢查JDBCInterpreter的源以確定哪種方法提供了null,然後在Presto項目中提出問題。 –

回答

2

事實證明這是一個簡單的配置問題。縱觀代碼getMaxResult

propertiesMap.get(COMMON_KEY).getProperty(MAX_LINE_KEY, MAX_LINE_DEFAULT)); 

所以我懷疑JDBC解釋了一些配置,我忘了,包括我似的解釋。尋找關鍵字COMMONMAX,有它:

添加這個屬性來似的解釋解決了這個問題。

相關問題