根据python的GIL,我们不能在CPU绑定的进程中使用线程,所以我的问题是Apache Spark如何在多核环境中利用python?
多线程python问题与Apache Spark内部结构分开。Spark上的并行性在JVM内部处理。
原因是在Python驱动程序中,SparkContext使用Py4J启动JVM并创建JavaSparkContext。
SparkContext
Py4J仅在驱动程序上用于Python和Java SparkContext对象之间的本地通信。大数据传输是通过不同的机制执行的。
Python中的RDD转换映射为Java中的PythonRDD对象的转换。在远程工作机上,PythonRDD对象启动Python子进程,并使用管道与它们进行通信,发送用户的代码和要处理的数据。
PS:我不确定这是否能完全回答您的问题。