Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/ql/CommandNeedRetryException

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/ql/CommandNeedRetryException

当我使用 '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 

实际上这是由于 hadoop 设置。我已经明确地设置了 HADOOP_CLASSPATH(仅作为 Java jar),而 运行 配置单元,它需要更多的 hadoop jar 文件,同样是通过配置单元配置文件添加的。所以我们需要在hadoop-env.sh中设置HADOOP_CLASSPATH如下

export HADOOP_CLASSPATH = ${HADOOP_CLASSPATH}:{你之前的类路径}

面临同样的问题,虽然HADOOP_CLASSPATH列出了所有必需的jar,但底层的jar没有"hadoop"组的读取权限。

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