首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果运行.foreach()的节点失败,Spark会做什么?

如果运行.foreach()的节点失败,Spark会做什么?
EN

Stack Overflow用户
提问于 2018-06-20 15:26:29
回答 2查看 82关注 0票数 0

我们有一个有数百万行的大型RDD。每一行都需要使用获得许可的第三方优化器(Gurobi)进行处理。我们有有限的许可证。

我们一直在调用火花.map()函数中的优化器。问题是星火将运行比它需要的更多的映射器,并丢弃结果。这会导致许可证耗尽的问题。

我们将在星火.foreach()方法中调用Gurobi。这是可行的,但我们有两个问题:

  1. 将数据从优化器返回到另一个RDD。我们的初步计划是将结果写入数据库(例如MongoDB或DynamoDB)。
  2. 如果.foreach()方法死在的节点上会发生什么?火花保证每个预言只运行一次。它是否检测到它死了并在其他地方重新启动它?还是其他事情发生了?
EN

Stack Overflow用户

回答已采纳

发布于 2018-06-20 16:08:30

通常,如果使用foreachPartition执行的任务死亡,则整个任务将死亡。

这意味着,如果不采取其他步骤来确保正确性,则外部系统可能已经确认了部分结果,从而导致状态不一致。

考虑到有限数量的许可证,mapforeachPartition不应该有任何区别。如果在这种情况下使用Spark是有意义的,最好的解决方法是限制执行器内核的数量,限制您拥有的许可证数量。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50951848

复制
相关文章

相似问题

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