0

最近、spark-kernel を使い始めました。

チュートリアルとサンプル コードに示されているように、クライアントをセットアップし、それを使用して spark-kernel でコード スニペットを実行し、このサンプル コードで示されているように結果を取得することができました。

ここで、spark-kernel で提供される通信 API を使用する必要があります。このチュートリアルを試しましたが、うまくいきません。実際、私はそれを機能させる方法を理解していません。

次のコードを試しましたが、このコードを実行すると、カーネルで「Received invalid target for Comm Open: my_target」というエラーが発生します。

package examples
import scala.runtime.ScalaRunTime._
import scala.collection.mutable.ListBuffer
import com.ibm.spark.kernel.protocol.v5.MIMEType
import com.ibm.spark.kernel.protocol.v5.client.boot.ClientBootstrap
import com.ibm.spark.kernel.protocol.v5.client.boot.layers.{StandardHandlerInitialization, StandardSystemInitialization}
import com.ibm.spark.kernel.protocol.v5.content._
import com.typesafe.config.{Config, ConfigFactory}
import Array._

object commclient extends App{
val profileJSON: String = """
{
      "stdin_port" : 48691,
      "control_port" : 44808,
      "hb_port" : 49691,
      "shell_port" : 40544,
      "iopub_port" : 43462,
      "ip" : "127.0.0.1",
      "transport" : "tcp",
      "signature_scheme" : "hmac-sha256",
      "key" : ""
}
""".stripMargin

val config: Config = ConfigFactory.parseString(profileJSON)
val client = (new ClientBootstrap(config)
    with StandardSystemInitialization
    with StandardHandlerInitialization).createClient()

def printResult(result: ExecuteResult) = {
    println(s"${result.data.get(MIMEType.PlainText).get}")
}
def printStreamContent(content:StreamContent) = {
    println(s"${content.text}")
}
def printError(reply:ExecuteReplyError) = {
    println(s"Error was: ${reply.ename.get}")
}

client.comm.register("my_target").addMsgHandler {
(commWriter, commId, data) =>
    println(data)
    commWriter.close()
}

// Initiate the Comm connection
client.comm.open("my_target")

}

このコードをどのように実行すればよいか教えてもらえますか:

// Register the callback to respond to being opened from the client
kernel.comm.register("my target").addOpenHandler { 
    (commWriter, commId, targetName, data) =>
        commWriter.writeMsg(Map("response" -> "Hello World!"))
}

comm API の使用法に関する完全な実例を教えていただければ幸いです。

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1