Summary
Parent epic: #4408
Spark migration (post Stage 2)
Migrate streampark-spark from Scala to Java with no behavior changes, and keep Console Spark submit/cancel/SQL validation working against the new Java APIs.
Module role
Remaining Spark runtime modules after #4432 removed user-facing dev traits (SparkStreaming, SparkBatch) and connector wrappers:
| Submodule |
Scala files |
Role |
streampark-spark-core |
4 |
SQL utilities — SparkSqlExecutor, SqlCommandParser, SparkSqlValidator, SQLContextUtil |
streampark-spark-client-api |
7 |
Public client API — SparkClient, request/response beans, SparkConfiguration, SparkShimsProxy |
streampark-spark-client-core |
3 |
Deploy implementations — SparkClientTrait, YarnClient, SparkClientEndpoint |
streampark-spark-sqlclient |
1 |
Spark SQL CLI entry — SqlClient |
Total: 15 .scala files under src/main (no test Scala today).
Downstream compatibility (must not break)
Console (streampark-console-service) depends on these packages today:
org.apache.streampark.spark.client.SparkClient + submit/cancel beans — SparkApplicationActionServiceImpl
org.apache.streampark.spark.client.proxy.SparkShimsProxy — SparkSqlServiceImpl
org.apache.streampark.spark.core.util.SparkSqlValidationResult / SparkSqlValidator (reflection) — SparkSqlController, SparkSqlServiceImpl
Keep package paths and public method signatures stable where possible; update Console imports only when unavoidable.
Note: Spark K8s pod template models (SparkK8sPodTemplates) already live in streampark-flink-kubernetes (Java) — out of scope for this issue.
Dependencies
Do not start until #4452 is merged. Follow the same sequential PR workflow as Flink Stage 2.
Constraints
Acceptance
References
Summary
Parent epic: #4408
Spark migration (post Stage 2)
Migrate
streampark-sparkfrom Scala to Java with no behavior changes, and keep Console Spark submit/cancel/SQL validation working against the new Java APIs.Module role
Remaining Spark runtime modules after #4432 removed user-facing dev traits (
SparkStreaming,SparkBatch) and connector wrappers:streampark-spark-coreSparkSqlExecutor,SqlCommandParser,SparkSqlValidator,SQLContextUtilstreampark-spark-client-apiSparkClient, request/response beans,SparkConfiguration,SparkShimsProxystreampark-spark-client-coreSparkClientTrait,YarnClient,SparkClientEndpointstreampark-spark-sqlclientSqlClientTotal: 15
.scalafiles undersrc/main(no test Scala today).Downstream compatibility (must not break)
Console (
streampark-console-service) depends on these packages today:org.apache.streampark.spark.client.SparkClient+ submit/cancel beans —SparkApplicationActionServiceImplorg.apache.streampark.spark.client.proxy.SparkShimsProxy—SparkSqlServiceImplorg.apache.streampark.spark.core.util.SparkSqlValidationResult/SparkSqlValidator(reflection) —SparkSqlController,SparkSqlServiceImplKeep package paths and public method signatures stable where possible; update Console imports only when unavoidable.
Dependencies
streampark-flink-clientmigration must merge first — completes Flink Stage 2).scalaundersrc/main/src/test)Constraints
trait→ interface + impl, json4s → Jackson if present, ScalaTest → JUnit 5-PsparkMaven profile — verify build with and without profile where applicableAcceptance
.scalaunderstreampark-spark(src/mainandsrc/test)-Psparkmodule builds and tests passstreampark-console-servicecompiles and Spark integration paths work (submit/cancel, SQL validate)enumeratum, scala-maven-plugin config, etc.)References