Hi everyone,
Trying my luck here, after no success in the user mailing list :)
I’m trying to use the "extension" feature of the Spark Connect CommandPlugin
(Spark 3.4.1) [1].
I created a simple protobuf message `MyMessage` that I want to send from the
connect client-side to the connect server (where I registered my plugin).
The source API for SparkSession class in `spark-connect-client-jvm` provides a
method `execute` that accepts a `com.google.protobuf.Any` [2], so I packed the
MyMessage object in an Any:
val spark = SparkSession.builder().remote("sc://localhost").build()
val cmd = com.test.MyMessage.newBuilder().setBlubb("hello world").build()
val googleAny = com.google.protobuf.Any.pack(cmd)
spark.execute(googleAny)
This compiles, but during execution I receive a NoSuchMethodError:
java.lang.NoSuchMethodError: 'void
org.apache.spark.sql.SparkSession.execute(com.google.protobuf.Any)'
After looking around for a while after decompiling I found that
spark-connect-client-jvm_2.12-3.4.1.jar!SparkSession#execute accepts a
`org.sparkproject.connect.client.com.google.protobuf.Any` (instead of only the
com.google.protobuf.Any).
Am I missing something, how am I supposed to use this? Is there an additional
build step or should I use a specific plugin? I'm using the sbt-protoc [3]
plugin in my setup.
Packing my message object `cmd` into an
org.sparkproject.connect.client.com.google.protobuf.Any does not compile.
Thanks,
Stefan
[1] https://github.com/apache/spark/pull/39291
[2]
https://github.com/apache/spark/blob/64c26b7cb9b4c770a3e056404e05f6b6603746ee/connector/connect/client/jvm/src/main/scala/org/apache/spark/sql/SparkSession.scala#L444
[3] https://github.com/thesamet/sbt-protoc