- 前言
- 报错
- 解决方案
- 后记
在IDEA使用SpringBoot集成Spark3.2写了一个SparkStreaming程序,通过打jar包的方式提交集群运行十分顺利,但是在IDEA调试运行(local模式)main方法却抛出了异常。
报错运行main方法报错:
Exception in thread "main" java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.解决方案(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. (TransportClientFactory.java:111) at org.apache.spark.network.TransportContext.createClientFactory(TransportContext.java:142) at org.apache.spark.rpc.netty.NettyRpcEnv. (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. (SparkContext.scala:460) at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2690) at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$2(SparkSession.scala:949) at scala.Option.getOrElse(Option.scala:121)
pom中添加内容:
io.netty >netty-bom4.1.58.Final pom io.netty >netty-buffer4.1.58.Final io.netty >netty-codec-http24.1.58.Final io.netty >netty-handler-proxy4.1.58.Final
再次启动main方法,成功运行,问题解决。
后记这类关于netty相关jar不同版本之间的api变动导致的不兼容问题,通过exclusions很难解决,这里是直接指定相关依赖的版本解决的。



