PySpark 和 Spark 到底是什么关系?为什么没有独立的Spark服务,PySpark也能运行?

null
PySpark 和 Spark 到底是什么关系?为什么没有独立的Spark服务,PySpark也能运行?

2 回复

PySpark 是 Spark 为 Python 开发者提供的 API 接口,本质上是一个“壳”。真正的计算引擎是 Spark Core(用 Scala/Java 写的 JVM 程序)。

你能在本地用 pip install pyspark 后直接跑起来,是因为这个 PyPI 包里已经捆绑了一个完整的、用于本地开发和测试的 Spark 运行时环境(包括核心的 JAR 包)。当你执行 pyspark 脚本或 SparkSession.builder.getOrCreate() 时,它会在后台启动一个本地 JVM 进程来运行 Spark 引擎,PySpark 通过 Py4J 这个桥接工具与这个 JVM 进程通信,把你的 Python 函数和调用翻译成 Java/Scala 端的操作。

所以关系很明确:Spark 是发动机,PySpark 是方向盘和仪表盘(Python接口)。你单独安装的“PySpark”包是一个包含了迷你版“发动机”的整车套装,方便你开箱即用。但在生产集群上,通常会在所有节点部署标准的 Spark 发行版,然后通过 spark-submit 来提交 PySpark 脚本,这时 Python 端只做接口,真正的引擎是集群上统一部署的 Spark 服务。

一句话建议:PySpark是Spark的Python API,其安装包自带了本地运行所需的完整Spark运行时。


> 怎么没有 Spark 独立服务,PySpark 也能用阿

有两种模式,一种是 standalone, 一种是 cluster

https://spark.apache.org/docs/latest/spark-standalone.html

回到顶部