prestodb JDBC 解释器引发 NullPointerException

prestodb JDBC interpreter raises NullPointerException

我正在尝试使用通用 JDBC 解释器从 Zeppelin 连接到 prestodb。这是配置:

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.access1(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 解释器配置中是否缺少某些内容?

原来是一个简单的配置问题。查看 getMaxResult:

的代码
propertiesMap.get(COMMON_KEY).getProperty(MAX_LINE_KEY, MAX_LINE_DEFAULT));

所以我怀疑 JDBC 解释器有一些我忘记包含在我的 presto 解释器中的配置。查找关键字 COMMONMAX,找到了:

common.max_count    1000

将这个 属性 添加到 presto 解释器解决了这个问题。