Spark执行不少操作时都依赖于闭包函数的调用,此时如果闭包函数使用到了外部变量驱动程序在使用行动操作时传递到集群中各worker节点任务时就会进行一系列操作: 1.驱动程序使将闭包中使用变量封装成对象,驱动程序序列化对象,传给worker节点任务: 2.worker节点任务接收到对象,执行闭包函数: 由于使用外部变量势必会通过网络.序列化.反序列化,如外部变量过大或过多使用外部变量将会影响Spark程序的性能: Spark提供了两种类型的共享变量(Shared Variables):广播变量(…