Spark调优(一)-----使用broadcast广播变量

本文介绍了Spark调优的一种方法——使用broadcast广播变量,以解决因HBase静态数据较大引起的性能问题。广播变量可以减少网络传输开销和内存占用,避免频繁GC。文章详细阐述了广播变量的原理、优化方案及其内部机制。
摘要由CSDN通过智能技术生成

优化方式

以下是亲测的一些Spark调优方法并附上优化时间:

1.使用broadcast广播变量

使用broadcast广播变量,将HBase中的静态表数据做广播,可以大大提高效率,在我们的应用场景中,因为HBase中的静态数据较大,大概是6万多条静态路段信息,若不使用broadcast,会引发频繁GC。
 

1.1原理说明

在算子函数中使用到外部变量或两表join时,默认情况下,Spark会将该变量或小维表复制多个副本,通过网络传输到task中,此时每个task都有一个变量副本。如果变量本身比较大的话(比如100M,甚至1G),那么大量的变量副本在网络中传输的性能开销,以及在各个节点的Executor中占用过多内存导致的频繁GC,都会极大地影响性能。因为每个 task 是一个线程,而且同在一个进程运行的 tasks 都属于同一个 application。所以我们使用broadcast广播变量,使每个节点(executor)上放一份就可以被所有 task 共享。
贴上Spark官网上的一段话:
Broadcast variables allow the programmer to keep a read-only variable cached on each machine rather than shipping a copy of it with tasks. They can be used, for example, to give every node a copy of a large input dataset in an efficient manner. Spark also attempts to dist

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值