前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住给大家分享一下。点击跳转到网站:https://www.captainai.net/dongkelun
前言
先说解决办法,提交时除了添加spark-sql-kafka和kafka-clients jar包外,还要添加spark-token-provider-kafka和commons-pool jar包,具体为spark-token-provider-kafka-0-10_2.12-3.0.1.jar和commons-pool2-2.6.2.jar
注意:Spark 3 版本和Spark 2有些不一样,提交Structured Streaming需要注意Kafka client 版本需要>=0.11.0.0,这个在spark官方文档里有说明:Please note that to use the headers functionality, your Kafka client version should be version 0.11.0.0 or up.
版本
- Spark 3.0.1
- Scala 2.12.2
- kafka-clients 2.6.0
异常及解决
java.lang.NoClassDefFoundError: org/apache/spark/kafka010/KafkaConfigUpdater
异常详细信息
1 | java.lang.NoClassDefFoundError: org/apache/spark/kafka010/KafkaConfigUpdater |
解决方案
添加 spark-token-provider-kafka-0-10_2.12-3.0.1.jar
解决思路:KafkaSourceProvider查看KafkaSourceProvider源码在580行找到KafkaConfigUpdater点进去,看看属于哪个jar包
java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig
异常详细信息
1 | java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig |
解决方案
添加 commons-pool2-2.6.2.jar,思路一样
最终添加的jar包
–jars spark-sql-kafka-0-10_2.12-3.0.1.jar,kafka-clients-2.6.0.jar,spark-token-provider-kafka-0-10_2.12-3.0.1.jar,commons-pool2-2.6.2.jar