我正在将齐柏林飞艇从0.8.0升级到0.9.0。设置JDBC解释器以访问Postgres数据库时,出现错误。
我在Zeppelin GUI中创建了“ JDBC.postgres”解释器,并运行了一个查询。它给出以下错误。
java.lang.AbstractMethodError: org.apache.zeppelin.interpreter.AbstractInterpreter.getZeppelinContext()Lorg/apache/zeppelin/interpreter/BaseZeppelinContext;
at org.apache.zeppelin.interpreter.AbstractInterpreter.interpret(AbstractInterpreter.java:32)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:103)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:676)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:569)
at org.apache.zeppelin.scheduler.Job.run(Job.java:172)
at org.apache.zeppelin.scheduler.AbstractScheduler.runJob(AbstractScheduler.java:121)
at org.apache.zeppelin.scheduler.ParallelScheduler.lambda$runJobInScheduler$0(ParallelScheduler.java:39)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
但是,相同的设置在版本0.8.0中正常工作
JDBC解释器依赖项:
/usr/lib/zeppelin/interpreter/jdbc
rw-rr- 1 root root 8866 Apr 7 21:24 slf4j-log4j12-1.7.10.jar
rw-rr- 1 root root 32119 Apr 7 21:24 slf4j-api-1.7.10.jar
rw-rr- 1 root root 648487 Apr 7 21:24 postgresql-9.4-1201-jdbc41.jar
rw-rr- 1 root root 489884 Apr 7 21:24 log4j-1.2.17.jar
rw-rr- 1 root root 108036 Apr 7 21:24 commons-pool2-2.2.jar
rw-rr- 1 root root 167962 Apr 7 21:24 commons-dbcp2-2.0.1.jar
rw-rr- 1 root root 46513 Apr 7 21:28 zeppelin-jdbc-0.9.0-preview1.jar
rw-rr- 1 root root 60686 Apr 7 21:28 commons-logging-1.1.1.jar
rw-rr- 1 root root 499634 Apr 7 21:28 commons-lang3-3.7.jar
rw-rr- 1 root root 54423 Apr 7 21:28 commons-exec-1.3.jar
我正在使用Amazon EMR版本6.0.0。 Zeppelin是在群集创建期间安装的。集群启动后,我更新了conf / zeppelin-env.sh中的变量来访问工件的依赖关系。修改后的解释器列表文件,以下载zeppelin-jdbc-0.9.0-preview1.jar。
做出上述更改后,我使用以下命令安装了jdbc解释器。
sudo /usr/lib/zeppelin/bin/install-interpreter.sh -n jdbc
然后我使用Zeppelin GUI创建postgress解释器并运行命令。
有人可以让我知道如何解决此问题。
当尝试使用EMR 6.0.0和Zeppelin 0.9.0的Zeppelin jdbc解释器使用Athena时,我遇到了相同的问题。
类似于EMR使用的Zeppelin快照版本,其AbstractInterpreter
要求使用签名为public abstract ZeppelinContext getZeppelinContext();
的方法。由JDBCInterpreter
中的zeppelin-jdbc-0.9.0-preview1.jar
实现的接口实现public abstract BaseZeppelinContext getZeppelinContext();
。这样就抛出了AbstractMethodException
。
[AWS EMR团队迟早应该解决此问题,但我能够从maven那里获取更新的zeppelin-interpreter-shaded-0.9.0-SNAPSHOT.jar
并用它代替zeppelin-interpreter-api-0.9.0-SNAPSHOT.jar
,并且似乎可以正常工作。
wget https://repo1.maven.org/maven2/org/apache/zeppelin/zeppelin-interpreter-shaded/0.9.0-preview1/zeppelin-interpreter-shaded-0.9.0-preview1.jar
sudo cp zeppelin-interpreter-shaded-0.9.0-SNAPSHOT.jar /usr/lib/zeppelin/interpreter/zeppelin-interpreter-api-0.9.0-SNAPSHOT.jar
然后杀死/重新启动Zeppelin解释器,应该很好!