zeppelin hive 解释器抛出 ClassNotFoundException

Posted

技术标签:

【中文标题】zeppelin hive 解释器抛出 ClassNotFoundException【英文标题】:zeppelin hive interpreter throws ClassNotFoundException 【发布时间】:2016-12-07 09:22:14 【问题描述】:

我已经部署了zeppelin 0.6,并在Jdbc解释器下配置了hive。

尝试执行

%hive     
show databases

投掷:

org.apache.hive.jdbc.HiveDriver 类 java.lang.ClassNotFoundException java.net.URLClassLoader.findClass(URLClassLoader.java:381) java.lang.ClassLoader.loadClass(ClassLoader.java:424) sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) java.lang.ClassLoader.loadClass(ClassLoader.java:357) java.lang.Class.forName0(本机方法) java.lang.Class.forName(Class.java:264) org.apache.zeppelin.jdbc.JDBCInterpreter.getConnection(JDBCInterpreter.java:220) org.apache.zeppelin.jdbc.JDBCInterpreter.getStatement(JDBCInterpreter.java:233) org.apache.zeppelin.jdbc.JDBCInterpreter.executeSql(JDBCInterpreter.java:292) org.apache.zeppelin.jdbc.JDBCInterpreter.interpret(JDBCInterpreter.java:398) org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:94) org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:383) 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.access$201(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)

【问题讨论】:

***.com/questions/36212092/…的可能重复 【参考方案1】:

我今天早上刚遇到这个问题。我不确定这是否是推荐的修复方法,但我下载了 Hive 1.2 和 Hadoop 2.6.4 的二进制包。然后我将以下 jar 复制到 ./interpreter/jdbc/ 并重新加载 zeppelin ./bin/zeppelin-daemon.sh reload

cp ~/Dev/Hadoop/apache-hive-1.2.1-bin/lib/hive-jdbc-1.2.1-standalone.jar ./interpreter/jdbc/

cp ~/Dev/Hadoop/hadoop-2.6.4/share/hadoop/common/hadoop-common-2.6.4.jar ./interpreter/jdbc/

【讨论】:

@Cooper 非常感谢,也为我工作。正如你所提到的,有没有更好的方法来解决这个问题?【参考方案2】:

1) 您可以只下载 Hive JDBC 驱动程序而不是整个 Hive jar 集,例如,来自 Cloudera 的一个:

http://www.cloudera.com/downloads/connectors/hive/jdbc/2-5-17.html

2)

从 0.14 开始的 Hive 将为 JDBC 部分提供一个独立的 jar:

hive-jdbc-standalone.jar

但是直到https://issues.apache.org/jira/browse/HIVE-9600 被解决, 你还需要两个罐子:

hadoop-common.jar

hadoop-auth.jar

与 hive-jdbc-standalone.jar 一起放入类路径

【讨论】:

【参考方案3】:

此处给出的评分最高的答案解决了问题

但是我已经将 HADOOP_HOME 的类路径添加到了interpreter.sh 中,以便共同获取 jar 文件

下面是我在 zeppelin 中添加到 bin/interpreter.sh 中的行

HADOOP_HOME=/opt/hadoop-2.6.2/
addJarInDirForIntp "$HADOOP_HOME/share/hadoop/common

【讨论】:

@Cooper6581 我收到了类似的错误,但是 ``` 错误 [2019-01-23 07:54:59,512] (pool-2-thread-2 Job.java[run]:190 ) - 作业失败 java.lang.RuntimeException: java.lang.NullPointerException at org.apache.zeppelin.interpreter.remote.RemoteInterpreterProcess.callRemoteFunction(RemoteInterpreterProcess.java:141) at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.internal_create (RemoteInterpreter.java:165) 引起:org.apache.thrift.transport.TSocket.open(TSocket.java:170) 的 java.lang.NullPointerException ```知道如何解决

以上是关于zeppelin hive 解释器抛出 ClassNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

Zeppelin(0.10.1版本)安装及创建hive解释器

Zeppelin0.6.2使用hive解释器

Zeppelin0.7.2结合hive解释器进行报表展示

Zeppelin 版本 0.7.3 - 连接到 Hive - 错误“找不到解释器 jdbc”

IoTDB Zeppelin 解释器抛出 java.lang.ArrayIndexOutOfBoundsException

在 zeppelin 的 jdbc 解释器中找不到解释器配置单元