英文:
Zeppelin JDBC interpreter is giving error in version 0.9.0-preview1
问题
我正在升级 Zeppelin 从 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 中更新了一个变量,以便访问 artifactory 获取依赖项。修改了 interpreter-list 文件以下载 zeppelin-jdbc-0.9.0-preview1.jar。
在进行了上述更改后,我使用以下命令安装了 jdbc 解释器。
sudo /usr/lib/zeppelin/bin/install-interpreter.sh -n jdbc
然后,我使用 Zeppelin GUI 创建了 postgress 解释器并运行了命令。
有人可以告诉我如何修复这个问题吗?
英文:
I am working on upgrading zeppelin from 0.8.0 to 0.9.0. While setting up JDBC interpreter to access Postgres databases I am getting an error.
I created "JDBC.postgres" interpreter in zeppelin GUI and ran a query. Its giving the following error.
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)
However, the same setup was working fine in version 0.8.0
JDBC interpreter dependencies:
/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
I am using Amazon EMR version 6.0.0. Zeppelin is installed during cluster creation. Once the cluster is up I updated a variable in conf/zeppelin-env.sh to access artifactory for dependencies. Modified interpreter-list file to download zeppelin-jdbc-0.9.0-preview1.jar.
After making the above stated changes I installed jdbc interpreter using the following command.
sudo /usr/lib/zeppelin/bin/install-interpreter.sh -n jdbc
Then I used zeppelin GUI to create postgress interpreter and run the commands.
Could anyone let me know how this be fixed.
答案1
得分: 0
我在尝试使用EMR 6.0.0和Zeppelin 0.9.0的jdbc解释器连接Athena时遇到了相同的问题。
看起来EMR使用的Zeppelin快照版本具有需要方法签名为public abstract ZeppelinContext getZeppelinContext();
的AbstractInterpreter
。而zeppelin-jdbc-0.9.0-preview1.jar
中的JDBCInterpreter
实现的接口是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解释器,问题应该就能解决了!
英文:
I had the same issue when trying to use Athena with Zeppelin jdbc interpreter using EMR 6.0.0 and Zeppelin 0.9.0.
Looks like the Zeppelin snapshot version used by EMR has an AbstractInterpreter
requiring a method with signature public abstract ZeppelinContext getZeppelinContext();
. While the interface implemented by JDBCInterpreter
in zeppelin-jdbc-0.9.0-preview1.jar
implements public abstract BaseZeppelinContext getZeppelinContext();
. Thus the AbstractMethodException
gets thrown.
Sooner or later the AWS EMR team should fix this, but I was able to grab an updated zeppelin-interpreter-shaded-0.9.0-SNAPSHOT.jar
from maven and use it to replace zeppelin-interpreter-api-0.9.0-SNAPSHOT.jar
and seemed to work.
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
Then just kill/restart the Zeppelin Interpreter and should be good to go!
专注分享java语言的经验与见解,让所有开发者获益!
评论