首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mapPartitions在循环中的行为是怎样的?

mapPartitions在循环中的行为是怎样的?
EN

Stack Overflow用户
提问于 2015-11-21 19:01:06
回答 1查看 323关注 0票数 0

我想了解一下,在下面的代码中,mapPartitions函数是如何运行的。它是否在每次迭代中创建单独的分区并将其分配给节点。或者在迭代中保留分区和分区到节点的映射?

理想情况下,我希望为整个循环保持相同的分区。

代码语言:javascript
运行
复制
for i in range(10):
    x = rdd.mapPartitions(fun).reduce(lambda a,b:a+b)
EN

回答 1

Stack Overflow用户

发布于 2015-11-21 23:30:35

那得看情况。如果缓存了rdd,那么分区将被计算一次,并在迭代中保留,除非出现某种故障,并且任务被重新调度到另一个worker上。否则,将为每次迭代重新计算它。在这种情况下,答案取决于rdd的血统。如果不涉及混洗,或者使用确定性分区和排序,那么答案是肯定的。否则,您不太可能在每次迭代中看到相同的内容。

如果你关心的是性能,那么缓存就足够了。如果您考虑在mapPartitions中执行一些副作用,并且希望在迭代之间保留这些副作用,那么您不能依赖于此。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33842525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档