【问题标题】:Zeppelin JDBC interpreter is giving error in version 0.9.0-preview1Zeppelin JDBC 解释器在 0.9.0-preview1 版本中出现错误
【发布时间】:2020-07-21 15:10:52
【问题描述】:

我正在努力将 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 中的变量以访问工件以获取依赖项。修改解释器列表文件以下载 zeppelin-jdbc-0.9.0-preview1.jar。

进行上述更改后,我使用以下命令安装了 jdbc 解释器。

sudo /usr/lib/zeppelin/bin/install-interpreter.sh -n jdbc

然后我使用 zeppelin GUI 创建 postgress 解释器并运行命令。

谁能告诉我如何解决这个问题。

【问题讨论】:

    标签: java postgresql jdbc amazon-emr apache-zeppelin


    【解决方案1】:

    我在使用 EMR 6.0.0 和 Zeppelin 0.9.0 尝试将 Athena 与 Zeppelin jdbc 解释器一起使用时遇到了同样的问题。

    看起来 EMR 使用的 Zeppelin 快照版本有一个 AbstractInterpreter,需要一个带有签名 public abstract ZeppelinContext getZeppelinContext(); 的方法。而JDBCInterpreterzeppelin-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 Interpreter 就可以了!

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 2019-05-20
      • 2017-08-17
      • 2016-04-08
      • 2017-06-23
      • 2016-12-07
      • 2021-11-26
      • 2020-08-04
      • 1970-01-01
      相关资源
      最近更新 更多