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

9
在Apache Spark程序中,我们如何知道哪些代码将在驱动程序中执行,哪些代码将在工作节点中执行?
2个回答

7
实际上很简单。由转换创建的闭包内发生的所有事情都在工作进程中执行。这意味着如果某些东西被传递到 map(...)filter(...)mapPartitions(...)groupBy*(...)aggregateBy*(...) 中,它将在工作进程中执行。这包括从持久存储或远程源读取数据。
countreduce(...)fold(...) 这样的操作通常在驱动程序和工作进程中执行。工作进程并行执行重要的工作,如来自工作进程的输出的减少等最终步骤是在驱动程序上顺序执行的。
其余的一切,比如触发一个操作或转换,都发生在驱动程序上。特别是每个需要访问 SparkContext 的操作。在 PySpark 中,这也意味着与 Py4j 网关的通信。

1
DataFrame.write(PySpark)是什么?它在哪里运行? - lfk

1

JavaRDD/JavaPairRDD/similar方法的参数中传递的所有闭包将由Spark节点执行。其他所有代码都是驱动程序代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接