蓝色飞艇 JDBC 解释器在版本 0.9.0-preview1 中出现错误。

huangapple 未分类评论43阅读模式
英文:

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!

huangapple
  • 本文由 发表于 2020年4月9日 11:53:39
  • 转载请务必保留本文链接:https://java.coder-hub.com/61113695.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定