java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/JobContext

开始报错

JobContext在Hive-exec里面有,所以觉得很奇怪说class not found 。java.lang.NoClassDefFoundError两种原因。

1.这个jar包确实没有。导入。

2.依赖包有冲突。导致无法加载。这个冲突的包,有可能是这个找不到类所属的jar包。也有可能是函数调用时,其他类的所属jar包冲突了。

本例子中JobContext类有,只有一个,没有冲突。但是查看异常信息栈,at org.apache.hadoop.hive.shims.ShimLoader.getHadoopShims(ShimLoader.java:95)

ShimLoader类有两个,冲突了。导致爆出上面异常。因此pom.xml中去掉hive-shims-common依赖,如下

删除hive-shims-common

<dependency>
 <groupId>org.apache.hive</groupId>
 <artifactId>hive-exec</artifactId>
 <version>1.1.0</version>
 <exclusions>
 <exclusion>
   <groupId>org.apache.hive.shims</groupId>
   <artifactId>hive-shims-common</artifactId>
 </exclusion>
 </exclusions>
</dependency>

后呈现真正有问题的地方,TaskAttemptContext类找不到。

这个属于hadoop-mapreduce-client-core jar包中的类。
<dependency>
 <groupId>org.apache.hadoop</groupId>
 <artifactId>hadoop-mapreduce-client-core</artifactId>
 <version>${hadoop.version}</version>
</dependency>

加上依赖后,类找到了,问题解决。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值