spark性能调优之三:广播机制broadcast

摘要:
当任务运行时,如果您想使用广播变量中的数据,您将首先尝试在BlockManager中获取与本地执行器相对应的变量副本;如果没有,请远程从驱动程序中提取变量副本,并将其保存在本地BlockManager中;此后,此执行器上的任务将直接使用本地BlockManager中的副本。默认情况下,有1000个任务和1000个副本。两者的网络传输性能相差近20倍;内存消耗减少20倍。在Sparksql中,当维度表和事实表连接时,我们可以将有限大小的维度表的所有数据分发给每个节点,供事实表使用,以避免混乱。

广播变量,初始的时候在driver上有一份副本。task在运行的时候,想要使用广播变量中的数据,首先会在本地的executor对应的BlockManager中尝试获取变量副本;如果没有,就从driver远程拉取变量副本,并保存在本地的BlockManager中;此后这个executor上的task,都会直接使用本地BlockManager中的副本。executor的BlockManager除了从driver上拉取,也可能从其他节点的BlockManager上拉取变量副本,越近越好。

默认情况下,1000个task,1000份副本。10G的数据,网络传输;在集群中,耗费10G的内存资源。

如果使用广播变量。50个executor,50个副本。500M的数据,从driver或最近节点拉取变量副本,网络资源;耗费500M的内存消耗。两者比较将近20倍的网络传输性能差距;20倍的内存消耗减少。

在sparksql中,当维度表和事实表进行join操作时,为了避免shuffle,我们可以将大小有限的维度表全部数据分发到每个节点上,供事实表使用。executor存储维度表的全部数据,一定程度上牺牲了空间,换取shuffle操作大量的耗时,这在sparksql中称为Broadcast Join.

Broadcast Join的条件如下:

1、被广播的表需要小于spark.sql.autoBroadcastJoinThreshold所配置的值,默认是10M(或者加了broadcast join的hint)

2、基表不能被广播,比如 left outer join时,只能广播右表

免责声明:文章转载自《spark性能调优之三:广播机制broadcast》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java大文件分片上传/多线程上传phpstorm快捷键下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Git安装配置(完整版)

/usr/bin/bashcd/var/www/aunsetGIT_DIRgitpulloriginmaster为您提供了另一个权限:chmod755/var/gitdata/a。git/books/post-receivechowngit:git/var/gitdata/a在git/hooks/post-receive模式下,客户端提交代码,服务器项目可以...

Mysql 查询以某个字符开头的语句

为了查询以某个字符开头的数据,MySQL中经常使用它。常见的语句如下:以查询文章标题以单词“positive”开头的语句为例:使用通配符:1SELECT*FROM`article`,其中title类似于“positive%”;使用左函数:使用字符串截断函数:1SELECT*FROM`article`其中substring(title,1,1)='positi...

JS学习笔记(一)JS处理JSON数据

在数据传输过程中,json以文本的形式传输,也就是字符串,而JS则对json对象进行操作。因此,JSON对象和JSON字符串之间的相互转换是关键。如果系统提示您找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。...

Foxyproxy 火狐代理插件

Firefox上的插件Autoproxy一直很难使用。它永远不能更新规则,但foxyproxy可以替代它。用鼠标中键单击foxyproxy图标以在不同的代理方法之间切换。foxyproxy图标从foxhead变为蓝色,因为内容传输发生在网页中,该传输通过默认代理服务器,默认代理的初始颜色为蓝色。...

beego

Charset=utf8“)56//参数4(可选)设置最大空闲连接7//参数5modelorm.RegisterModelRegisterModelWithPrefix。使用表名前缀orm.RegisterModelWithPrefixbeego自动创建表。1//参数1使用默认数据库ORM接口使用1//查询操作2funread(){3o:=ORM.NewOr...

[笔记]manjaro kde主题&手动安装主题

安装manjaroKDE主题。首先,安装manjaro主题,有两种方法:“系统设置”-“全局主题”-“获取新的全局主题”,您还可以在“外观”中获得“等离子样式、应用程序样式、颜色等”的新全局主题“.通过manjarokdestore下载主题,然后将主题导入系统。但是,由于某些原因,方法1在我的计算机上不可行。加载速度非常慢,下载速度非常慢。据说可以通过pro...