spark里面算子里面使用外部变量和BroadCast变量的区别:
1、如果在算子里面使用外部变量,spark会将外部变量复制多个副本,通过网络传输到每一个task里面去(也就是说,此时的外部变量是task级别的)
2、BroadCast变量,使用spark的广播功能进行广播,广播之后保障每个executor里面只驻留一份变量,而同一个Executor中的task共享这一份变量(也即是说,BroadCast的变量是Executor级别的)
很显然,第二种方式是更能节省网络资源和内存资源的。