在Apache Spark中区分驱动程序代码和工作代码

Gop*_*K M 8 driver worker execution apache-spark

在Apache Spark程序中,我们如何知道代码的哪一部分将在驱动程序中执行,哪部分代码将在工作节点中执行?

带着敬意

zer*_*323 7

它实际上非常简单.由转换创建的闭包内发生的一切都发生在一个工人身上.这意味着如果事情是通过内map(...),filter(...),mapPartitions(...),groupBy*(...),aggregateBy*(...)是在工人执行.它包括从持久存储或远程源读取数据.

操作一样count,reduce(...),fold(...)通常是对司机和工人执行.工人并行执行重物提升,并且在驾驶员上依次执行一些最终步骤,例如减少从工人接收的输出.

其他所有内容,例如触发动作或转换都发生在驱动程序上.特别是它意味着需要访问的每个动作SparkContext.在PySpark中,它还意味着与Py4j网关的通信.