数据岗位面试题更新 2026-08-05

在 PySpark 中,广播变量(Broadcast Variable)的定义是什么?它主要用于解决什么问题?

数据技术原理PySpark

考察说明

考查对 PySpark 广播变量概念及用途的理解

回答思路

  1. 【回答框架 1】广播变量是 PySpark 提供的一种只读变量,它会在每个 executor 上缓存一份副本,而不是在每次任务中与数据一起传输。其核心作用是当多个任务需要共享一个较大的只读数据集(如查找表、配置信息)时,避免在每个任务中重复序列化和网络传输该数据,从而显著减少网络 I/O 和集群通信开销。
  2. 【回答框架 2】广播变量的典型使用场景是当一个较大的只读对象(例如维度表、字典数据)需要与 RDD 或 DataFrame 中的每条记录进行 join 或查找操作时。例如,在小表 join 大表时,可以将小表广播到每个 executor,避免频繁的 shuffle 操作,提升任务执行效率。
  3. 【回答框架 3】广播机制是通过高效的广播算法(如 tree broadcast)将数据分发到各 executor,每个 executor 只保存一份副本,所有任务共享,而不是每个任务拷贝一份。广播变量是只读的,不能被修改,但可以访问其 value 属性获取原始数据。
  4. 【回答框架 4】使用广播变量时需要权衡内存消耗:广播的数据会驻留在每个 executor 的内存中,如果广播数据过大或 executor 数量众多,可能导致内存溢出。因此,广播变量适合数据量适中且需被多次复用的场景。
  5. 【关键点 1】广播变量是只读的共享变量,在 executor 上缓存副本。
  6. 【关键点 2】主要用于避免大对象在任务间重复传输,减少网络开销。
  7. 【关键点 3】适合小表 join 大表,减少 shuffle。
  8. 【关键点 4】广播变量存储在 executor 内存中,需关注内存占用。
  9. 【易错点 1】广播变量并非实时更新,若底层数据变化需重新广播。
  10. 【易错点 2】过度使用广播变量或广播过大的数据集可能导致内存溢出。
  11. 【易错点 3】广播变量只保证数据分发,不提供分布式锁或一致性保证。