首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spark2.2快照播放WSClient Nosuchmethod错误

使用Spark2.2快照播放WSClient Nosuchmethod错误
EN

Stack Overflow用户
提问于 2017-03-03 16:33:42
回答 1查看 354关注 0票数 0

我正在使用Play WsClient将请求发送到面向火花驱动程序的喷雾服务器端点。有问题的呼吁如下:

代码语言:javascript
复制
  def serializeDataset(requestUrl: String, recipe: Recipe): Future[(Option[String], String, Int)] = {
    ws.url(requestUrl).post(Json.toJson(recipe)).map { response =>
    val code = (response.json \ "code").as[Int]
    code match {
      case OK => ((response.json \ "uuid").asOpt[String], (response.json \ "schema").as[String], code)
      case _ => ((response.json \ "message").asOpt[String], "", code)
    }
  }
}

执行时,我会得到以下错误

代码语言:javascript
复制
Caused by: java.lang.NoSuchMethodError: io.netty.util.internal.PlatformDependent.newAtomicIntegerFieldUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    at org.asynchttpclient.netty.NettyResponseFuture.<clinit>(NettyResponseFuture.java:52)
    at org.asynchttpclient.netty.request.NettyRequestSender.newNettyResponseFuture(NettyRequestSender.java:311)
    at org.asynchttpclient.netty.request.NettyRequestSender.newNettyRequestAndResponseFuture(NettyRequestSender.java:193)
    at org.asynchttpclient.netty.request.NettyRequestSender.sendRequestWithCertainForceConnect(NettyRequestSender.java:129)
    at org.asynchttpclient.netty.request.NettyRequestSender.sendRequest(NettyRequestSender.java:107)
    at org.asynchttpclient.DefaultAsyncHttpClient.execute(DefaultAsyncHttpClient.java:216)
    at org.asynchttpclient.DefaultAsyncHttpClient.executeRequest(DefaultAsyncHttpClient.java:184)
    at play.api.libs.ws.ahc.AhcWSClient.executeRequest(AhcWS.scala:45)
    at play.api.libs.ws.ahc.AhcWSRequest$.execute(AhcWS.scala:90)
    at play.api.libs.ws.ahc.AhcWSRequest$$anon$2.execute(AhcWS.scala:166)
    at play.api.libs.ws.ahc.AhcWSRequest.execute(AhcWS.scala:168)
    at play.api.libs.ws.WSRequest$class.post(WS.scala:510)
    at play.api.libs.ws.ahc.AhcWSRequest.post(AhcWS.scala:107)
    at webservices.DataFrameService.serializeDataset(DataFrameService.scala:36)

看起来,WSClient正在挑选不包含相关功能的Netty版本。

当我使用Spark的2.2快照版本编译应用程序时,但在用2.1版本编译时,就会发生此问题。我不知道为什么这一变化会产生影响。星火驱动程序是我的sbt构建中的一个单独项目。

我怀疑这与应用程序及其依赖项的打包有关。以下是我在sbt中尝试的内容:

  1. 将显式("io.netty" % "netty-all" % "4.0.43.Final")添加到我的依赖项中
  2. 向火花导入添加了排除语句,如下所示: "org.apache.spark“%%”火花-sql“% sparkV排除(”org.jboss.netty“、"netty")排除(”io.netty“、"netty") "org.apache.spark”%%“火花-核心”% sparkV排除(“org.jboss.netty”、"netty")排除(“io.netty”、"netty") "org.apache.spark“%”sparkV“排除(”org.scalamacros“,“准引号”)排除(“org.jboss.netty”,"netty")排除(“io.netty”,"netty") "org.apache.spark“%%”火花-蜂窝“% sparkV排除(”org.scalamacros“,”准引号“)排除(”org.jboss.netty“,"netty")排除(”io.netty“,"netty")
  3. 更改play-ws模块添加到项目依赖项的顺序(将其移到末尾,将其移动到开头)

任何帮助都很感激。

EN

回答 1

Stack Overflow用户

发布于 2017-03-04 14:18:31

在进一步的回顾中,我发现在Play项目中仍然存在对星火库的依赖。我把这个去掉了,看起来很管用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42584023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档