更新时间:2022-05-06 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作业相关问题
Spark作业相关问题所有常见问题
- Spark如何将数据写入到DLI表中
- 如何查看DLI Spark作业的实际资源使用情况
- DLI Spark作业是否支持定时周期任务作业
- 通用队列操作OBS表如何设置AK/SK
- 运行Spark作业报java.lang.AbstractMethodError
- Spark作业访问MySQL数据库的方案
- 将Spark作业结果存储在MySQL数据库中,缺少pymysql模块,如何使用python脚本访问MySQL数据库?
- 添加Python包后,找不到指定的Python环境
- 如何在DLI中运行复杂PySpark程序?
- Spark作业访问OBS数据时报ResponseCode: 403和ResponseStatus: Forbidden错误
- Spark作业运行大批量数据时上报作业运行超时异常错误
- Spark SQL语法创建表时是否支持定义主键
- 如何通过JDBC设置spark.sql.shuffle.partitions参数提高并行度
more
