《Spark大数据分析:核心概念、技术及实践》一3.9 共享变量
3.9 共享变量
Spark使用的架构是无共享的。数据分布在集群的各个节点上,每个节点都有自己的CPU、内存和存储资源。没有全局的内存空间用于任务间共享。驱动程序和任务之间通过消息共享数据。
举例来说,如果一个RDD操作的函数参数是驱动程序中变量的引用,Spark会将这个变量的副本以及任务一起发送给执行者。每个任务都有一份变量的副本并把它当成只读变量使用。任何对这个变量的更新都只存在任务的内部,改动并不会回传给驱动程序。而且Spark会把这个变量在每一个阶段的开始发送给worker节点。
对于一些应用而言,这种默认行为是低效的