系列文章:
- pyspark 原理、源码解析与优劣势分析(1) ---- 架构与java接口
- pyspark 原理、源码解析与优劣势分析(2) ---- Executor 端进程间通信和序列化
- pyspark 原理、源码解析与优劣势分析(3) ---- 优劣势总结
Executor 端进程间通信和序列化
对于 Spark 内置的算子,在 Python 中调用 RDD、DataFrame 的接口后,从上文可以看出会通过 JVM 去调用到 Scala 的接口,最后执行和直接使用 Scala 并无区别。而 对于需要使用 UDF 的情形,在 Executor 端就需要启动一个 Python worker 子进程,然后执行 UDF 的逻辑。那么 Spark 是怎样判断需要启动子进程的呢?