码迷,mamicode.com
首页 > 其他好文 > 详细

【Spark调优】Broadcast广播变量

时间:2019-03-21 01:06:28      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:功能   集合   tps   遇到   变量   调优   子函数   size   维表   

【业务场景】      

  在Spark的统计开发过程中,肯定会遇到类似小维表join大业务表的场景,或者需要在算子函数中使用外部变量的场景(尤其是大变量,比如100M以上的大集合),那么此时应该使用Spark的广播(Broadcast)功能来提升性能。

 

【原理说明】      

  在算子函数中使用到外部变量或两表join时,默认情况下,Spark会将该变量或小维表复制多个副本,通过网络传输到task中,此时每个task都有一个变量副本。如果变量本身比较大的话(比如100M,甚至1G),那么大量的变量副本在网络中传输的性能开销,以及在各个节点的Executor中占用过多内存导致的频繁GC,都会极大地影响性能。

 

【优化方案】

      因此对于上述情况,如果使用的外部变量比较大,建议使用Spark的广播功能,对该变量进行广播。广播后的变量,会保证每个Executor的内存中,只驻留一份变量副本,而Executor中的相关所有task执行时,可以共享该Executor中的这一份变量副本。可以大大减少变量副本的数量,从而减少网络传输的性能开销,并减少对Executor内存的占用开销,降低GC的频率。

 

  我的代码实践:https://github.com/wwcom614/Spark

 

 

【Spark调优】Broadcast广播变量

标签:功能   集合   tps   遇到   变量   调优   子函数   size   维表   

原文地址:https://www.cnblogs.com/wwcom123/p/10568928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!