qq_53152163 2023-10-08 09:27 采纳率: 0%
浏览 7

.setEvictionPolicy(Lorg/apache/commons/pool2/impl/EvictionPolicy;)V

环境:

kafka版本:2-12.2.6.3
spark版本:3.2.4
利用pycharm远程虚拟环境,python=3.7
Structured Streaming连接kafka

请问为什么spark消费kafka一直报错:

Caused by: java.lang.NoSuchMethodError: org.apache.spark.sql.kafka010.consumer.InternalKafkaConsumerPool$PoolConfig.setEvictionPolicy(Lorg/apache/commons/pool2/impl/EvictionPolicy;)V

百度后的是解决办法:

提交时除了添加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

可是我添加jar包后还是报这个错
我是利用PYSPARK_SUBMIT_ARGS=--packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.2.4 pyspark-shell;让他自己下载依赖包的,没有自动下载的,我也手动添加到jars目录中了

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-10-08 11:36
    关注

    引自强大而免费的微信小程序:皆我百晓生。


    这个错误通常是由于jar包冲突导致的。您可以尝试以下解决方法:

    1. 确保您添加的jar包版本与您当前使用的Spark版本兼容。可以通过运行spark-submit --version命令查看您当前Spark版本。

    2. 检查您的jar包是否与当前Spark版本的兼容版本。您可以在Spark官方文档中找到Spark和Kafka版本之间的兼容性信息。

    3. 确保您添加的jar包覆盖了Spark默认的jar包。您可以通过运行spark-submit命令时使用--jars参数来指定jar包路径,而不是将jar包放在jars目录下。

    例如:

    spark-submit --jars /path/to/spark-token-provider-kafka-0-10_2.12-3.0.1.jar,/path/to/commons-pool2-2.6.2.jar your_spark_application.py
    

    请将/path/to/替换为您实际jar包的路径。

    如果您仍然遇到问题,请提供完整的错误消息和堆栈跟踪,以便我们可以更好地帮助您解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月8日