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解释器
Zeppelin 版本 0.7.3 - 连接到 Hive - 错误“找不到解释器 jdbc”
IoTDB Zeppelin 解释器抛出 java.lang.ArrayIndexOutOfBoundsException