根据Python的GIL,我们不能在CPU绑定进程中使用线程,那么我的问题是,Apache Spark如何在多核环境下利用Python?
Python中的多线程问题与Apache Spark内部机制是分开处理的。Spark上的并行处理在JVM内部进行。
这是因为在Python驱动程序中,SparkContext
使用Py4J启动JVM并创建JavaSparkContext。
Py4J仅用于驱动程序本地通信,将Python和Java SparkContext对象连接起来;大数据传输则通过另一种机制执行。
Python中的RDD转换映射到Java中的PythonRDD对象上的转换。在远程工作机器上,PythonRDD对象会启动Python子进程,并使用管道与它们进行通信,发送用户代码和要处理的数据。
PS:我不确定这是否完全回答了您的问题。