每日一题简述Spark中共享变量的基本原理与用途?

Posted 勾叔谈大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题简述Spark中共享变量的基本原理与用途?相关的知识,希望对你有一定的参考价值。

大家好,我是勾叔。今天的面试题是:简述Spark中共享变量(广播变量和累加器)的基本原理与用途。



问题分析



考察共享变量的理解和使用。广播变量的使用场景很重要,是常见的优化手段。


核心问题回答



通常情况下,一个传递给 RDD 操作(如map、reduceByKey)的 func 是在远程节点上执行的。函数 func 在多个节点执行过程中使用的变量,是Driver上同一个变量的多个副本。这些变量以副本的方式拷贝到每个task中,并且各task中变量的更新并不会返回 Driver 。

为了解决以上问题,Spark 提供了两种特定类型的共享变量 : 广播变量 和 累加器。广播变量主要用于高效分发较大的数据对象,累加器主要用于对信息进行聚合。

广播变量的好处,不需要每个task带上一份变量副本,而是变成每个节点的executor才一份副本。这样的话, 就可以让变量产生的副本大大减少。而且 Spark 使用高效广播算法(BT协议)分发广播变量以降低通信成本。

累加器是 Spark 中提供的一种分布式的变量机制,在Driver端进行初始化,task中对变量进行累加操作。

广播变量典型的使用案例是Map Side Join;累加器经典的应用场景是用来在 Spark 应用中记录某些事件/信息的数量。



问题扩展



Map Side Join的使用场景及具体实现,以及相关参数。

大家如果想进行更深入的了解和学习,请关注勾叔谈大数据参与更多互动。



推荐阅读:




以上是关于每日一题简述Spark中共享变量的基本原理与用途?的主要内容,如果未能解决你的问题,请参考以下文章

每日一题介绍Spark核心组件及功能?

每日一题简要介绍一下 Spark 的内存管理?

每日一题Spark的算子可以分为哪两类,区别是什么?

2. Spark原理-RDD及共享变量

Spark核心编程

每日一题说说Spark的动态资源分配?