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' 命令更改组的读取权限后问题解决了。
当我使用 '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' 命令更改组的读取权限后问题解决了。