首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RDD上确定正确的分区数量

在RDD上确定正确的分区数量
EN

Stack Overflow用户
提问于 2015-06-26 22:02:13
回答 1查看 237关注 0票数 0

我读过一些评论,说RDD的分区数量是内核数量的2-3倍。我有8个节点,每个节点都有两个12核处理器,所以我有192个核心,我将分区设置在384-576之间,但似乎工作效率不高,我尝试了8个分区,结果相同。也许我必须设置其他参数,以便我的作业在集群上比在我的机器上更好地工作。我补充说,我分析的文件有15万行。

代码语言:javascript
复制
 val data = sc.textFile("/img.csv",384)
EN

回答 1

Stack Overflow用户

发布于 2017-09-29 15:17:38

主要效果是指定的分区太少或太多。

  1. 太少的分区您将无法利用群集中的所有可用核心。
  2. 太多的分区在管理许多小任务时会产生过多的开销。

在两者之间,第一个对性能的影响要大得多。此时,对于分区数低于1000的分区,调度太多小任务的影响相对较小。如果你有数万个分区,那么spark就会变得非常慢。

现在,考虑到您的情况,您将从8个分区和384-576个分区获得相同的结果。一般来说,经验法则说,CPU = (NumberOfWorkerNodes*NoOfCoresPerWorkerNode)-1,也就是我们知道的,任务是由NoOfPartitions核心处理的。因此,我们应该设置分区数量,这是集群中要处理的核心的总数-1(对于驱动程序的Application Master )。这意味着每个核心将一次处理每个分区。这意味着使用191个分区可以提高性能。另外,设置更少和更多分区的场景的影响将在beginnning中解释。

希望这能有所帮助!

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

https://stackoverflow.com/questions/31075234

复制
相关文章

相似问题

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