更新时间:2024-12-10 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作业运维类