Χρή*_*ιος 10 distributed-computing worker apache-spark
我想知道collectAsMap在Spark中是如何工作的.更具体地说,我想知道所有分区的数据聚合将在何处发生?聚合发生在主人或工人中.在第一种情况下,每个工作人员在master上发送数据,当master从每个worker收集数据时,master将汇总结果.在第二种情况下,工人负责汇总结果(在他们之间交换数据之后),之后结果将被发送给主人.
我必须找到一种方法,以便主人能够分别从每个分区收集数据,而无需工人交换数据.
您可以在此处查看他们如何进行collectAsMap.由于RDD类型是一个元组,看起来它们只是使用普通的RDD收集,然后将元组转换为键值对的映射.但他们在评论中确实提到不支持多地图,因此您需要在数据中进行一对一的键/值映射.
collect执行的操作是执行Spark作业并从工作程序中获取每个分区的结果,并使用驱动程序上的reduce/concat阶段聚合它们.
因此,应该是驱动程序分别从每个分区收集数据而不需要工作人员交换数据来执行的情况collectAsMap.
请注意,如果您在使用之前对RDD进行转换collectAsMap会导致混乱发生,则可能存在一个中间步骤,导致工作人员之间交换数据.查看集群主机的应用程序UI,以查看有关如何执行应用程序的spark的更多信息.
| 归档时间: |
|
| 查看次数: |
12883 次 |
| 最近记录: |