线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / hadoop / hive / ql / CommandNeedRetryException

时间:2015-07-01 02:19:32

标签: hive

当我使用'hive shell'命令启动配置单元时。它给了我以下例外:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/ql/CommandNeedRetryException 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/common/LogUtils$LogInitializationException 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.CommandNeedRetryException 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.common.LogUtils$LogInitializationException 

2 个答案:

答案 0 :(得分:2)

实际上这是因为hadoop设置。我已经显式地设置了HADOOP_CLASSPATH(仅作为Java jar),并且在运行hive时,它需要更多的hadoop jar文件,同样是通过hive配置文件添加。所以我们需要在hadoop-env.sh中设置HADOOP_CLASSPATH,如下所示

export HADOOP_CLASSPATH = $ {HADOOP_CLASSPATH}:{yours previous classpath}

答案 1 :(得分:0)

面对同样的问题,虽然HADOOP_CLASSPATH列出了所有必要的罐子,但是底层罐子没有“hadoop”组的读取权限。

使用'chmod'命令更改为组的读取权限后,解决了问题。