如何更改pyspark中的并行任务数

Posted

技术标签:

【中文标题】如何更改pyspark中的并行任务数【英文标题】:How to change number of parallel tasks in pyspark 【发布时间】:2017-11-18 17:21:28 【问题描述】:

如何在 pyspark 中更改并行任务的数量?

我的意思是如何更改在我的 PC 上运行的虚拟地图的数量。实际上我想通过地图功能的数量来绘制加速图表。

示例代码:

words = sc.parallelize(["scala","java","hadoop"])\
           .map(lambda word: (word, 1)) \
           .reduceByKey(lambda a, b: a + b)

如果你理解我的目的,但我问错了,如果你纠正它,我将不胜感激

谢谢

【问题讨论】:

在您的 PC 上(本地执行)还是在集群中?可以说前者没有特别的兴趣...... 是的,我的意思是本地执行 这个没有太大意义;一般来说,如果你打算在一台机器上工作,你绝对没有理由使用 Spark(除了用于演示目的的玩具示例,也就是说,像你这样的问题没有实际用处)。 【参考方案1】:

对于这个玩具示例,并行任务的数量取决于:

输入 rdd 的分区数 - 如果未另外配置,则由 spark.default.parallelism 设置。 分配给local 的线程数(可能会被上述内容取代)。 系统的物理和基于权限的功能。 数据集的统计属性。

但是,Spark 不是轻量级并行化 - 为此我们有低开销的替代方案,如 threadingmultiprocessing,构建在这些之上的更高级别的组件(如 joblibRxPy)和本机扩展(到用线程转义 GIL)。

Spark 本身是重量级的,具有巨大的协调和通信开销,而 as stated by by desernaut 在仅限于单个节点时,除了测试之外几乎没有任何理由。其实it can make things much worse with higher parallelism

【讨论】:

好点(+1);来自最后一个链接:“Spark 不专注于并行计算。并行处理更多的是特定解决方案的副作用而不是主要目标。Spark 首先是分布式,其次是并行。要点是通过横向扩展而不是加速现有计算,使处理时间随着数据量的增加而保持不变。” 我建议您编辑您的答案以包含上述引用...

以上是关于如何更改pyspark中的并行任务数的主要内容,如果未能解决你的问题,请参考以下文章

如何在R中的并行任务中删除临时文件

并发和并行的区别

理解和使用SQL Server中的并行

c#中的并行任务性能

如何等待并行任务完成

并发,并行