zeppelin hive解释器抛出ClassNotFoundException

时间:2016-08-02 06:40:16

标签: hive interpreter apache-zeppelin

我已经部署了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)

3 个答案:

答案 0 :(得分:8)

我今天早上遇到了这个问题。我不确定这是否是推荐的修复方法,但我下载了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/

答案 1 :(得分:0)

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

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

2)

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

  

蜂房JDBC-standalone.jar

但在https://issues.apache.org/jira/browse/HIVE-9600解决之前, 你还需要两个罐子:

  

Hadoop的common.jar

     

Hadoop的auth.jar

与hive-jdbc-standalone.jar

一起放入classpath

答案 2 :(得分:0)

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

但是我已经将HADOOP_HOME的类路径添加到interpreter.sh中以共享jar文件

以下是我在zeppelin

中添加到bin / interpreter.sh的行
HADOOP_HOME=/opt/hadoop-2.6.2/
addJarInDirForIntp "${HADOOP_HOME}/share/hadoop/common