【Spark3.2】io.netty.buffer.PooledByteBufAllocator.<init>

【Spark3.2】io.netty.buffer.PooledByteBufAllocator.<init>,第1张

【Spark3.2】io.netty.buffer.PooledByteBufAllocator
  • 前言
    • 报错
    • 解决方案
  • 后记

前言

在IDEA使用SpringBoot集成Spark3.2写了一个SparkStreaming程序,通过打jar包的方式提交集群运行十分顺利,但是在IDEA调试运行(local模式)main方法却抛出了异常。

报错

运行main方法报错:

Exception in thread "main" java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.<init>(ZIIIIIIZ)V
	at org.apache.spark.network.util.NettyUtils.createPooledByteBufAllocator(NettyUtils.java:171)
	at org.apache.spark.network.util.NettyUtils.getSharedPooledByteBufAllocator(NettyUtils.java:142)
	at org.apache.spark.network.client.TransportClientFactory.<init>(TransportClientFactory.java:111)
	at org.apache.spark.network.TransportContext.createClientFactory(TransportContext.java:142)
	at org.apache.spark.rpc.netty.NettyRpcEnv.<init>(NettyRpcEnv.scala:77)
	at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:493)
	at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:57)
	at org.apache.spark.SparkEnv$.create(SparkEnv.scala:268)
	at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:191)
	at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:277)
	at org.apache.spark.SparkContext.<init>(SparkContext.scala:460)
	at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2690)
	at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate(SparkSession.scala:949)
	at scala.Option.getOrElse(Option.scala:121)
解决方案

pom中添加内容:

    >
        >
            >
                >io.netty>
                >netty-bom>
                >4.1.58.Final>
                >pom>
            >
            >
                >io.netty>
                >netty-buffer>
                >4.1.58.Final>
            >
            >
                >io.netty>
                >netty-codec-http2>
                >4.1.58.Final>
            >
            >
                >io.netty>
                >netty-handler-proxy>
                >4.1.58.Final>
            >
        >
    >

再次启动main方法,成功运行,问题解决。

后记

这类关于netty相关jar不同版本之间的api变动导致的不兼容问题,通过exclusions很难解决,这里是直接指定相关依赖的版本解决的。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/719788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存