我试图在我的java gradle项目中添加一个spark模块,但是,我使用的是io.netty:netty-all:5.0.0.Alpha1和spark 1.5.2使用的是io.netty:netty-all:4.0。 33.最后,不幸的是,由于PooledByteBufAllocator的构造函数,alpha版本不向后兼容。

Exception in thread "main" java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.<init>(ZIIIIIII)V
at org.apache.spark.network.util.NettyUtils.createPooledByteBufAllocator(NettyUtils.java:122)
at org.apache.spark.network.client.TransportClientFactory.<init>(TransportClientFactory.java:105)
at org.apache.spark.network.TransportContext.createClientFactory(TransportContext.java:78)
at org.apache.spark.network.netty.NettyBlockTransferService.init(NettyBlockTransferService.scala:61)
at org.apache.spark.storage.BlockManager.initialize(BlockManager.scala:187)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:528)

对我来说,一个选择是派生使用其他构造函数,并希望alpha版本可以工作。另一个是要以某种方式强制传递依赖项针对单个模块(Spark模块)进行解析,但是我不清楚如何实现这一点。

任何建议深表感谢。

最佳答案

我唯一想到的就是OSGI。也就是说,您最好不要使用netty的Alpha版本并坚持使用稳定的分支。

07-27 21:47
查看更多