Spark Connect 快速入门远程连接 Spark 集群实战
1. 什么是 Spark ConnectSpark Connect 是 Spark 提供的一种远程连接能力它把客户端和 Spark 服务端解耦开来。客户端通过 DataFrame API 描述计算逻辑服务端负责真正执行 Spark 任务并返回结果。可以把它理解成你继续写熟悉的 PySpark DataFrame 代码但真正执行计算的不再是本地会话而是远程 Spark 服务端。2. 启动 Spark Connect 服务端要使用 Spark Connect首先需要启动支持 Spark Connect 的 Spark 服务端。官方 Quickstart 中使用的是start-connect-server.sh。source~/.profile$HOME/sbin/start-connect-server.sh第一行用于加载环境变量第二行用于启动 Spark Connect Server。3. 连接前先停止普通 SparkSession在创建远程 Spark Connect 会话之前需要先停止已有的普通本地 SparkSession因为普通 SparkSession 和远程 Spark Connect Session 不能共存。frompyspark.sqlimportSparkSession SparkSession.builder.master(local[*]).getOrCreate().stop()4. 创建远程 SparkSession服务端启动后就可以在客户端通过remote方法连接 Spark Connect Server。frompyspark.sqlimportSparkSession sparkSparkSession.builder.remote(sc://localhost:15002).getOrCreate()这里的sc://localhost:15002表示当前客户端要连接到本机15002端口上的 Spark Connect 服务端。5. 使用 Spark Connect 创建 DataFrame远程 SparkSession 创建成功后后续的 DataFrame 使用方式和普通 Spark 基本一致。fromdatetimeimportdatetime,datefrompyspark.sqlimportRow dfspark.createDataFrame([Row(a1,b2.,cstring1,ddate(2000,1,1),edatetime(2000,1,1,12,0)),Row(a2,b3.,cstring2,ddate(2000,2,1),edatetime(2000,1,2,12,0)),Row(a4,b5.,cstring3,ddate(2000,3,1),edatetime(2000,1,3,12,0))])查看结果df.show()输出如下------------------------------------------ | a| b| c| d| e| ------------------------------------------ | 1|2.0|string1|2000-01-01|2000-01-01 12:00:00| | 2|3.0|string2|2000-02-01|2000-01-02 12:00:00| | 4|5.0|string3|2000-03-01|2000-01-03 12:00:00| ------------------------------------------这说明 Spark Connect 改变的是连接方式和执行位置而不是 DataFrame 的基本使用习惯。6. 一个最小可运行示例下面是一段可以直接跑通的最小示例。frompyspark.sqlimportSparkSessionfrompyspark.sqlimportRowfromdatetimeimportdatetime,date# 停止已有的普通 SparkSessionSparkSession.builder.master(local[*]).getOrCreate().stop()# 创建远程 Spark Connect SessionsparkSparkSession.builder.remote(sc://localhost:15002).getOrCreate()# 创建 DataFramedfspark.createDataFrame([Row(a1,b2.,cstring1,ddate(2000,1,1),edatetime(2000,1,1,12,0)),Row(a2,b3.,cstring2,ddate(2000,2,1),edatetime(2000,1,2,12,0)),Row(a4,b5.,cstring3,ddate(2000,3,1),edatetime(2000,1,3,12,0))])# 查看数据df.show()7. Spark Connect 的核心价值Spark Connect 最核心的价值在于解耦。传统方式下客户端和 Spark 执行环境关系较紧而 Spark Connect 让客户端只负责表达计算逻辑服务端负责执行任务。这种模式更适合远程开发、Notebook 连接远程 Spark、平台化建设以及服务化接入。从开发者视角看最大的好处是API 习惯几乎不变但 Spark 的使用方式变得更灵活了。8. 总结Spark Connect 不是单纯多了一种连接方式而是让 Spark 从本地绑定式使用走向远程服务式使用。你依然使用熟悉的 DataFrame API但真正的计算发生在远程 Spark 服务端。对于需要远程连接 Spark、构建轻量客户端或做平台化接入的场景来说Spark Connect 是一个值得重点关注的能力。