springboot 整合spark ,运行在yarn,各种问题…
- 最近需求需要这样做一个分析平台,之前做过整合,是在standalone模式了,想了解的,可以关注一下,往下滑动!
- 先看下这个问题,之前没遇到过啊,为啥这次整合问题这么多,idea本地测试少量数据sparkSql,几十兆吧。
sql代码 :
val livingSql =
"""
| select
| count(imsi) livingCounts
| from
| channelInfo c
| inner join
| living l
| on c.lac_id = l.lac_id and c.cell_id = l.cell_id
|""".stripMargin
spark.sql(livingSql)
这还不至于出错吧。。。。。。。
但是稍微改一下把count(imsi) 改成 count(*) 就没问题,不能为了完成而完成啊,还是解决问题吧
问题:
2021-09-29 16:31:46.850 ERROR 20408 --- [ffle-client-9-2] o.a.s.network.client.TransportClient : Failed to send RPC 6740351104424319093 to /172.19.2.221:63048: java.lang.AbstractMethodError: org.apache.spark.network.protocol.MessageWithHeader.touch(Ljava/lang/Object;)Lio/netty/util/ReferenceCounted;
java.lang.AbstractMethodError: org.apache.spark.network.protocol.MessageWithHeader.touch(Ljava/lang/Object;)Lio/netty/util/ReferenceCounted;
at io.netty.util.ReferenceCountUtil.touch(ReferenceCountUtil.java:77) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:785) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:701) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:112) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:716) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:708) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:791) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:701) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.handler.timeout.IdleStateHandler.write(IdleStateHandler.java:303) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:716) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:708) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext.access$1700(AbstractChannelHandlerContext.java:56) [netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1102) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1149) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1073) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:405) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-all-4.1.36.Final.jar:4.1.36.Final]
at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_121]
问题很明显,就是netty-all-4.1.36.Final.jar这个jar包,就是因为netty版本冲突导致的。我的spark版本2.2.0:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
查一下看看pom文件的依赖吧,打开pom文件,ctrl+shift+alt+u ,放大
netty版本io.netty:netty:3.99.Final以及报错中的io.netty:netty-all:4.1.36.Final.jar;
看看我的spark-core的吧!
maven repository 进去之后找到spark-core 版本2.2.0,scala版本2.11,一直往下滑。。。。。。
我依赖和官方依赖的版本不一样啊,重新引入官方版本依赖,成功解决!!
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.0.43.Final</version>
</dependency>
还有很多坑。。。。。。还得继续写代码,调bug,就写到这儿吧,关注哦!! 后续分享其他问题