前言
先说一下为什么Spark会引入广播变量?
我们在driver端定义了一个变量,如果要在executor端使用,spark会为把这个变量以task的形式给每个executor发送,也就是有多少个task,每个executor中就会有多少个变量,如果该变量是个集合,而且比较大,甚至会导致内存溢出。因此,引入了广播变量来解决这种问题。下面会用实际案例进行详细描述。
广播变量简介
Spark广播变量是一种优化工具,它将一个较大的只读变量发送到集群内的所有工作节点,以便在任务执行期间重用数据。广播变量可以显著提升需要频繁访问的只读数据的性能,并减少了跨网络发送数据的开销。
广播变量的优势
- 减少数据传输
广播变量将数据发送到每个工作节点,减少了跨网络发送数据的开销。这对于大型只读数据集特别有用,可以显著提升任务的性能。 - 重用数据
广播变量允许在任务执行期间重用广播的数据。这可以减少重复的数据加载和计算,提高任务的效率。 - 节约内存
广播变量在每个工作节点上缓