更新时间:2022-09-29 GMT+08:00
运行Spark作业报java.lang.AbstractMethodError
Spark 2.3对内部接口Logging做了行为变更,如果用户代码里直接继承了该Logging,且编译时使用的是低版本的Spark,那么应用程序在Spark 2.3的环境中运行将会报java.lang.AbstractMethodError。
解决措施有如下两种方案:
- 基于Spark 2.3重新编译应用
- 使用sl4j+log4j来实现日志功能,而不是直接继承Spark内部接口Logging。具体如下:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.16</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> private val logger = LoggerFactory.getLogger(this.getClass) logger.info("print log with sl4j+log4j")
父主题: 作业运维报错
作业运维报错 所有常见问题
- 运行Spark作业报java.lang.AbstractMethodError
- Spark作业访问OBS数据时报ResponseCode: 403和ResponseStatus: Forbidden错误
- 有访问OBS对应的桶的权限,但是Spark作业访问时报错 verifyBucketExists on XXXX: status [403]
- Spark作业运行大批量数据时上报作业运行超时异常错误
- 使用Spark作业访问sftp中的文件,作业运行失败,日志显示访问目录异常
- 执行作业的用户数据库和表权限不足导致作业运行失败
- 为什么Spark3.x的作业日志中打印找不到global_temp数据库
- 在使用Spark2.3.x访问元数据时,DataSource语法创建avro类型的OBS表创建失败
more