Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ApacheSpark如何处理python多线程问题?_Python_Multithreading_Apache Spark - Fatal编程技术网

ApacheSpark如何处理python多线程问题?

ApacheSpark如何处理python多线程问题?,python,multithreading,apache-spark,Python,Multithreading,Apache Spark,根据我们不能在CPU受限的进程中使用线程,所以我的问题是ApacheSpark如何在多核环境中利用python 多线程python问题与Apache Spark内部分离。Spark上的并行性在JVM中处理 原因是在Python驱动程序中,SparkContext使用Py4J启动JVM并创建JavaSparkContext Py4J仅在驱动程序上用于Python和Java SparkContext对象之间的本地通信;大型数据传输通过不同的机制执行 Python中的RDD转换映射到Java中Pyt

根据我们不能在CPU受限的进程中使用线程,所以我的问题是ApacheSpark如何在多核环境中利用python

多线程python问题与Apache Spark内部分离。Spark上的并行性在JVM中处理

原因是在Python驱动程序中,
SparkContext
使用Py4J启动JVM并创建JavaSparkContext

Py4J仅在驱动程序上用于Python和Java SparkContext对象之间的本地通信;大型数据传输通过不同的机制执行

Python中的RDD转换映射到Java中PythonRDD对象上的转换。在远程工作者机器上,PythonRDD对象启动Python子进程,并使用管道与它们通信,发送用户代码和要处理的数据


PS:我不确定这是否真的完全回答了你的问题。

我认为这里的要点是PySpark不使用多线程,所以GIL根本不是问题。@zero323你能详细说明你的评论吗?没有太多要详细说明的。除了测试之外,PySpark只在少数几个地方使用线程来执行一些辅助任务,比如启动外部进程。其他的一切都是一个很好的单线程处理。我同意@zero323,这就是为什么我说所有的并行处理都在JVM内部处理的原因。@eliasah公平地说,JVM的一部分对多线程处理也不是很重要,你不觉得吗?内务管理需要多个线程,JVM执行者使用线程,但实际上,在Spark中实现并行并不需要多个线程。人们可以在每台机器上启动同等数量的工人,并获得相同的并行性,尽管价格较高。