当前位置: 首页 > 知识库问答 >
问题:

当shuffle partition大于200(数据帧中的spark.sql.shuffle.partitions 200(默认情况下))时会发生什么情况

陈扬
2023-03-14

spark sql聚合操作,用于洗牌数据,即spark。sql。洗牌分区200(默认情况下)。当洗牌分区大于200时,性能会发生什么变化。

当分区数大于2000时,Spark使用不同的数据结构进行无序记账。所以,若分区的数量接近2000个,那个么将其增加到2000多个。

但是我的问题是当随机分区大于200(假设300)时会有什么行为。

共有1个答案

孔扬
2023-03-14

根据相对较大集群上的典型工作负载,选择200作为默认值,并为作业分配足够的资源。否则,应根据两个因素选择此数字-可用内核的数量和分区大小(建议将分区保持在接近100Mb)。选定的分区数应该是可用核心数的倍数,但不应该太大(通常是核心数的1-3倍)。如果分区数大于默认值,则不应更改Spark的行为-它只会增加Spark需要执行的任务数)。

您可以在2019年Spark AI峰会上观看此演讲-它涵盖了有关Spark程序优化的许多细节,包括分区数量的选择。

 类似资料:
  • 当您以“正常”方式停止或重新启动tomcat时,正在处理的http请求会发生什么情况?它们将被处理直到响应完成还是http线程被中断?有没有办法配置优雅的停车?

  • 问题内容: 试图了解熊猫某些功能背后的设计原理。 如果我有一个3560行18列的DataFrame,那么 是3560,但是 是18。 也许对于来自R的人来说这很自然;对我来说,感觉不太“ Pythonic”。是否在某处介绍了熊猫的基本设计原理? 问题答案: DataFrame主要是基于列的数据结构。在后台,DataFrame内部的数据存储在块中。大致来说,每个dtype都有一个块。 每列都有一个d

  • 这个问题是关于布尔值而不是布尔值的(但我很想知道两者是否相同)。假设您有一个函数正在对数据执行多次检查,并且在每种情况下它都有特定的响应。您希望函数显示所有无效输入的大小写(以及它们无效的原因),因此您希望检查所有输入(而不仅仅是一个并停止和返回)。使用单个布尔值(如Boolean x=isValidEmail(String email))然后处理它是否无效并在未来的检查中重用x以使您不分配额外的

  • 默认情况下,我们的路由器是Yaf_Router, 而默认使用的路由协议是Yaf_Route_Static,是基于HTTP路由的, 它期望一个请求是HTTP请求并且请求对象是使用Yaf_Request_Http

  • 问题内容: 谁能向我解释为什么Hibernate 默认情况下不设置注释,而是允许实体根据当前设置的属性生成INSERT? 什么是不使用的原因,因此默认情况下包括所有实体属性? 问题答案: @ jb-nizet说了什么。 另外,在我的书中是个坏主意。 从生成的SQL跳过空字段,很快您将发现自己处于声明列的情况,这实际上导致持久数据与休眠知道的实体数据不同。这会造成挫败感,并可能使您诉诸昂贵的电话。

  • 根据Java教程 将包装类型(整数)的对象转换为其相应的基元(int)值称为取消装箱。当包装类的对象为: 作为参数传递给需要相应基元类型的值的方法 分配给相应基元类型的变量 为什么在这种情况下会发生拆箱? 在这种情况下,这些事情发生在哪里?是否有管理数组中元素访问的底层方法?或者[]暗示某种变量?