如何更改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 不是轻量级并行化 - 为此我们有低开销的替代方案,如 threading
和 multiprocessing
,构建在这些之上的更高级别的组件(如 joblib
或 RxPy
)和本机扩展(到用线程转义 GIL)。
Spark 本身是重量级的,具有巨大的协调和通信开销,而 as stated by by desernaut 在仅限于单个节点时,除了测试之外几乎没有任何理由。其实it can make things much worse with higher parallelism
【讨论】:
好点(+1);来自最后一个链接:“Spark 不专注于并行计算。并行处理更多的是特定解决方案的副作用而不是主要目标。Spark 首先是分布式,其次是并行。要点是通过横向扩展而不是加速现有计算,使处理时间随着数据量的增加而保持不变。” 我建议您编辑您的答案以包含上述引用...以上是关于如何更改pyspark中的并行任务数的主要内容,如果未能解决你的问题,请参考以下文章