NoClassDefFoundError - hadoop/crypto/key/KeyProviderTokenIssuer && hadoop/fs/BatchListingOperations

简介: NoClassDefFoundError - hadoop/crypto/key/KeyProviderTokenIssuer && hadoop/fs/BatchListingOperations 报错解决与总结。

一.引言

使用 spark.hadoopFile 读取 RCFile 时,报错 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/crypto/key/KeyProviderTokenIssuer 与 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/BatchListingOperations,修改依赖解决对应问题。

二.KeyProviderTokenIssuer

由于报错原因为 java.lang.NoClassDefFoundError 而不是 NoSuchMethod,所以基本排除是依赖冲突的高低版本的问题,如果不放心也可以使用编辑器进行全局搜索,这里全局搜索是没有该类的:

image.gif编辑

确实没有该类,提高 hadoop-common 消除该报错:

<dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

image.gif

此时代码已有该类:

image.gif编辑

三.BatchListingOperations

修改 pom 后再次运行任务,再次提示 NoClassDefFoundError,根据上面的经验,这里判断还是没有依赖,所以再次修改 hadoop 版本。

image.gif编辑

hadoop-common 提高至 3.3.3:

<dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.3.3</version>
            <scope>provided</scope>
        </dependency>

image.gif

再次运行任务没有问题:

image.gif编辑

四.判断与排查

1.如何判断没有依赖还是依赖冲突

一般情况下:

NoSuchMethod -> 依赖冲突

NoClassDefFoundError ->

A. 报错有自己代码的异常栈:对应 Class / Object 初始化失败

B. 报错均为官方异常栈:无对应依赖

2.最简单的确认方式

在 idea 或者 maven-tree 中查看报错对应依赖,如果有多个,大概率是依赖冲突,如果一个也搜不到则为无对应依赖,像这样快速查找,即可确定是单个,多个还是没有对应 class。

image.gif编辑

3.如果寻找对应版本

博主一般直接将报错贴至 Bing 国际版,像上面的错就可以直接得到版本。

image.gif编辑

image.gif编辑

4.最确切的版本定位

如果要寻找项目真实的版本,可以寻找底层代码的 GitHub,查看你当前调用版本 API 所在 branch 的 pom.xml,其内部的版本即为最确切的版本。例如之前在 Spark - ml.dmlc.xgboost4j / spark 版本匹配与 NoSuchMethodError 解决 一文中我们通过排查源码 pom.xml,才最终定位到当前 spark 版本与 xgboost 指定 spark 版本不一致导致依赖冲突。

image.gif编辑

目录
相关文章
|
9月前
|
存储 分布式计算 Hadoop
aws s3常用命令、hdfs dfs/hadoop fs常用命令
aws s3常用命令、hdfs dfs/hadoop fs常用命令
939 0
|
1月前
|
分布式计算 Hadoop
Hadoop数据倾斜重新定义键(Key)
【7月更文挑战第5天】
18 3
|
2月前
|
数据采集 分布式计算 Hadoop
hadoop数据倾斜Key分布不均
【6月更文挑战第21天】
29 1
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
102 9
|
3月前
|
分布式计算 Hadoop Shell
Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第4天】Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
67 5
|
分布式计算 运维 Hadoop
【大数据开发运维解决方案】hadoop fs常用命令案例解释
hadoop fs -mkdir hadoop fs -ls hadoop fs -put hadoop fs -get hadoop fs -get [-ignorecrc] [-crc] hadoop fs -cat hadoop fs -cp hadoop fs -mv hadoop fs -rm(-rm -r) hadoop fs -rm -r -skipTrash hadoop fs -expunge hadoop fs -tail hadoop fs -du -h hadoop fs -du -
【大数据开发运维解决方案】hadoop fs常用命令案例解释
|
分布式计算 Hadoop Unix
|
移动开发 分布式计算 Hadoop

相关实验场景

更多