Is Spark Connect production-ready in 2026?
Summary
- As of October 2026, Spark Connect is a released, documented part of Apache Spark. The docs say it "supports PySpark and Scala applications", and every release since 3.4 has widened its coverage.
- It doesn't run everything: RDDs and SparkContext are unsupported, it has no built-in authentication, and the Go client's README says it "should not be used in any production setting".
- Apache also hosts Swift and Rust clients. Their READMEs require Apache Spark 4.2.0 and state no maturity level, so test them against your own workload first.
Is Spark Connect production-ready in 2026?
For PySpark and Scala code that uses the DataFrame, SQL and Structured Streaming APIs, the upstream docs support using Spark Connect today. It has shipped with Apache Spark since 3.4, the docs say it "supports PySpark and Scala applications", and each 4.x release added coverage. The Spark Connect overview doesn't use the word "production", though. Judge it on three things: the APIs you need, the client language, and how you'll secure the endpoint.
How does Spark Connect work?
Spark 3.4 introduced "a decoupled client-server architecture that allows remote connectivity to Spark clusters using the DataFrame API and unresolved logical plans as the protocol." The client turns DataFrame operations into unresolved logical plans "encoded using protocol buffers" and sends them over gRPC. Results come back "as Apache Arrow-encoded row batches."
The docs list three operational benefits:
- Stability. "Applications that use too much memory will now only impact their own environment as they can run in their own processes."
- Upgradability. The Spark driver can be upgraded independently of applications.
- Debuggability and observability. You can debug interactively from an IDE and monitor with your framework's own metrics and logging.
What changed in each release?
| Release | Notable Spark Connect changes (from the release notes) |
|---|---|
| 3.4.0 | Python client for Spark Connect |
| 3.5.0 | Scala client, Structured Streaming support in Python and Scala, initial Go client |
| 4.0.0 | Lightweight pyspark-client package, a release tarball with Spark Connect enabled by default, full API compatibility for the Java client, spark.api.mode, ML on Spark Connect, a Swift client |
| 4.1.0 | Spark ML on Connect GA for the Python client, JDBC driver for Spark Connect |
| 4.2.0 | RDD API compatibility work, such as DataFrame.zipWithIndex in PySpark |
What doesn't Spark Connect support?
- RDDs and SparkContext. The protocol "does not support all the execution APIs of Spark, most importantly RDDs", and the client has no access "to the static Spark configuration or the SparkContext."
- JVM internals from PySpark. The client doesn't use Py4J, so private fields such as
df._jdfaren't reachable. - Some streaming APIs. The "majority of the Streaming API is supported, including DataStreamReader, DataStreamWriter, StreamingQuery and StreamingQueryListener."
- UDFs without setup. UDFs work "by default for the shell and in standalone applications with additional set-up requirements." In Scala, you register a ClassFinder and upload JARs with
addArtifact. - Authentication. "Spark Connect does not have built-in authentication." Its gRPC HTTP/2 interface lets you put an authenticating proxy in front of it.
Before you migrate, check the API reference: supported APIs are labeled "Supports Spark Connect".
Which clients can you use?
| Client | Where it lives | What its docs or README say |
|---|---|---|
| PySpark | Apache Spark | Supported since 3.4. pip install pyspark-client installs the lightweight client. |
| Scala | Apache Spark (spark-connect-client-jvm) |
Supported since 3.5 |
| Go | github.com/apache/spark-connect-go | "highly experimental and should not be used in any production setting" |
| Swift | github.com/apache/spark-connect-swift | "a subproject of Apache Spark". Requires Apache Spark 4.2.0. States no maturity level. |
| Rust | github.com/apache/spark-connect-rust | Apache repo, created 2025-05-26. A Rust crate plus a Python package meant as a drop-in replacement for pyspark-client. Requires Spark 4.2.0 or later. States no maturity level. |
How do you connect a client?
Start a server from a Spark download, then point a session at it:
./sbin/start-connect-server.sh
from pyspark.sql import SparkSession
spark = SparkSession.builder.remote("sc://localhost").appName("SimpleApp").getOrCreate()
The server binds spark.connect.grpc.binding.port, which defaults to 15002. You can also set the SPARK_REMOTE environment variable, for example export SPARK_REMOTE="sc://localhost". The docs note that "there is no code change needed" with this approach. Since Spark 4.0, setting spark.api.mode (default classic) to connect makes a Spark Classic application "automatically use Spark Connect by running a local Spark Connect server".
How Databricks approaches Spark Connect
"Databricks Connect is built on open-source Spark Connect." For Databricks Runtime 13.3 LTS and above, it's "an extension of Spark Connect with additions and modifications to support working with Databricks compute modes and Unity Catalog." Serverless compute uses Spark Connect too. Only Spark Connect APIs are supported there, and Spark Connect "defers analysis and name resolution to execution time, which may change the behavior of your code."
FAQs
Can I move existing PySpark code to Spark Connect unchanged?
Code that only calls APIs labeled "Supports Spark Connect" needs just a connection change, such as SPARK_REMOTE. Code that uses RDDs, SparkContext or df._jdf has to be rewritten first.
Is the Go client ready for production?
Not according to its README. It says the client "should not be used in any production setting" and that "the PMC of the Apache Spark project reserves the right to withdraw and abandon the development of this project if it is not sustainable."
Does Spark Connect work with Spark Declarative Pipelines?
Yes. The SDP programming guide shows spark-pipelines run --remote sc://my-cluster:15002 to run a pipeline on a remote Spark Connect server.
The information provided herein is for general informational purposes only and may not reflect the most current product capabilities or configurations.