Apache Spark如何收集和协调执行者的结果

发布此问题以了解Apache Spark如何收集和协调执行者的结果。

假设我正在与3个执行者一起工作。我的DataFrame已分区并在这3个执行器上运行。 所以现在,当我在DataFrame上执行count()或collect()操作时,spark将如何协调这3个执行器的结果?

val prods = spark.read.format("csv").option("header","true").load("testFile.csv")

prods.count(); // How spark collect data from three executors? Who will coordinate the result from different executors and give it to driver?
hzhdestiny 回答:Apache Spark如何收集和协调执行者的结果

prods.count(); // spark如何从三个执行者收集数据?谁来协调来自不同执行者的结果并将其提供给驱动程序?

当您提交火花提交时,如果您指定master,则客户端程序(驱动程序)将开始在yarn上运行,如果将yarn指定为master,则将其指定为local。 https://spark.apache.org/docs/latest/submitting-applications.html

由于您在问题中添加了标签yarn,所以我假设您的意思是yarn-url,所以yarn在群集的任何节点上启动客户端程序(驱动程序)并进行注册,并将工作人员(执行者)分配给驱动程序,以便在每个节点上执行。每个转换/操作在每个工作程序节点(执行程序)上并行运行。一旦每个节点完成作业,它们就会将结果返回给驱动程序。

,

好吧,你不清楚哪一部分?

让我使其通用,客户端/驱动程序启动,并请求本地/独立主/纱线主群集管理器,该驱动程序需要资源来执行任务,因此为其分配驱动程序与工人。 return分配工作程序,在工作程序节点上启动执行程序,并将信息提供给客户端程序,您可以使用这些工作程序执行工作。因此,将数据划分到每个工作程序节点中,并完成并行任务/转换。一次collect()或count ()被调用(我假设这是工作的最后一部分)。然后每个执行器将其结果返回给驱动程序。

本文链接:https://www.f2er.com/3168773.html

大家都在问