在Apache Spark程序中,我们如何知道哪些代码将在驱动程序中执行,哪些代码将在工作节点中执行?
map(...)
、filter(...)
、mapPartitions(...)
、groupBy*(...)
、aggregateBy*(...)
中,它将在工作进程中执行。这包括从持久存储或远程源读取数据。count
、reduce(...)
、fold(...)
这样的操作通常在驱动程序和工作进程中执行。工作进程并行执行重要的工作,如来自工作进程的输出的减少等最终步骤是在驱动程序上顺序执行的。SparkContext
的操作。在 PySpark 中,这也意味着与 Py4j 网关的通信。JavaRDD/JavaPairRDD/similar方法的参数中传递的所有闭包将由Spark节点执行。其他所有代码都是驱动程序代码。