- 前言
- 报错
- 解决方案
- 后记
在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很难解决,这里是直接指定相关依赖的版本解决的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)