在我们的项目中,我们有一个flink(1.1.3)流作业,它从一个kafka队列中读取数据,执行Map函数转换,然后写入另一个队列。
在我们将一个传出的rest请求作为流的一部分引入之前,它一直工作得很好。为此,我们使用了playframework wsclient(就像在堆栈的其他地方使用的一样),并以以下方式在代码中创建它:
val config = new AhcWSClientConfig(wsClientConfig = WSClientConfig())
val builder = new AhcConfigBuilder(config)
val ahcConfig = builder.configure().build()
new AhcWSClient(ahcConfig)(ActorMaterializer()(ActorSystem()))
这在本地运行得很好,但在部署它并在集群上运行时,我遇到了以下异常:
java.lang.NoSuchMethodError: akka.util.Helpers$.toRootLowerCase(Ljava/lang/String;)Ljava/lang/String;
at akka.stream.StreamSubscriptionTimeoutSettings$.apply(ActorMaterializer.scala:491)
at akka.stream.ActorMaterializerSettings$.apply(ActorMaterializer.scala:243)
at akka.stream.ActorMaterializerSettings$.apply(ActorMaterializer.scala:232)
at akka.stream.ActorMaterializer$$anonfun$1.apply(ActorMaterializer.scala:41)
at akka.stream.ActorMaterializer$$anonfun$1.apply(ActorMaterializer.scala:41)
at scala.Option.getOrElse(Option.scala:121)
at akka.stream.ActorMaterializer$.apply(ActorMaterializer.scala:41)
at com.ourstuff.etl.core.utils.web.GlobalWSClient$.generateClient(WSClientFactory.scala:32)
通过调查,我假设这是akka 2.3.x(由flink1.1.x带来)和akka 2.4.x(由playframework带来)之间的冲突。
我们将flink集群升级到1.3.1(以及我们的代码对flink的依赖性),假设这将解决问题。但同样的问题似乎依然存在。
你知道是什么导致了这一切吗?
1条答案
按热度按时间jhkqcmku1#
解决此依赖冲突的唯一方法是将冲突的类重新定位到不同的命名空间中。