2017-03-03 3 views
0

私は、Play WsClientを使用して、Sparkドライバプログラムの前にあるSprayサーバーエンドポイントに要求を送信しています。問題の呼び出しはここにある:Spark 2.2のNosuchmethodエラーを再生します。スナップショット

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) 
    } 
    } 
} 

実行すると、私はWSClientは、関連する機能が含まれていない網状のバージョンを拾っているように見えます

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) 

このエラーが発生します。

この問題は、2.2-SNAPSHOTバージョンのSparkでアプリケーションをコンパイルすると発生しますが、2.1バージョンでコンパイルすると発生しません。この変更がなぜ変わるのか、私は考えていません。 Sparkドライバプログラムは、私のsbtビルドでは別のプロジェクトです。

私の疑惑は、これがアプリケーションのパッケージ化とその依存関係と関係していることです。ここで私はrecitifyするSBTにしようとしたものです:変更

"org.apache.spark" %% "spark-sql" % sparkV exclude("org.jboss.netty","netty") exclude("io.netty","netty") 

"org.apache.spark" %% "spark-core" % sparkV exclude("org.jboss.netty","netty") exclude("io.netty","netty") 

"org.apache.spark" %% "spark-mllib" % sparkV exclude("org.scalamacros", "quasiquotes") exclude("org.jboss.netty","netty") exclude("io.netty","netty") 

"org.apache.spark" %% "spark-hive" % sparkV exclude("org.scalamacros", "quasiquotes") exclude("org.jboss.netty","netty") exclude("io.netty","netty") 
    1. を追加しましたが、そのようなスパーク輸入に文を除外し、私の依存関係を明示的に("io.netty" % "netty-all" % "4.0.43.Final")を追加しましたplay-wsモジュールがプロジェクトの依存関係に追加される順序(最後まで移動し、最初に移動)

    何か助けていただければ幸いです。

  • 答えて

    0

    さらに検討すると、私は、Playプロジェクト内でSparkライブラリに長続きする依存関係があることがわかりました。私はこれを削除し、それは動作しているようだ。

    関連する問題