EKS上Spark Operator部署Spark流任务遇Kafka类缺失问题求助
解决方案:Spark Operator 下 Kafka 依赖类找不到问题
问题背景
基于Scala开发的Spark Structured Streaming任务,负责从Kafka读取数据并写入S3的Hudi表,迁移到EKS上的Spark Operator时,在YAML配置中指定了依赖包:
spark.jars.packages: org.apache.spark:spark-sql-kafka-0-10_2.12:3.1.2,org.apache.hudi:hudi-spark3.1-bundle_2.12:0.11.1
但驱动和执行器均抛出如下错误:
java.lang.ClassNotFoundException: org.apache.spark.sql.kafka010.KafkaBatchInputPartition
问题原因
这是Spark的已知问题,该问题仅会在未发布的Spark 3.4版本中得到修复。
解决步骤
- 放弃通过
spark.jars.packages动态拉取依赖的方式 - 构建自定义Spark镜像,将以下依赖包提前打包到镜像内:
spark-sql-kafka-0-10_2.12-3.1.2.jar及其所有关联依赖Jar包- Hudi对应的
hudi-spark3.1-bundle_2.12:0.11.1Jar包
- 在Spark Operator的YAML配置中指定该自定义镜像运行任务,即可解决类找不到的异常。
内容的提问来源于stack exchange,提问作者haripriya rajendran
相关产品推荐
相关产品推荐

