我试图理解Spark Streaming中repartitionAndSortWithinPartitions
的概念,无论重分区是发生在驱动程序上还是在worker上。如果它发生在驱动程序上,那么worker是否在排序发生之前等待所有数据到来。
像任何其他转换一样,它是由执行者处理的。数据不通过驱动程序传递。换句话说,这是标准的洗牌机制,这里没有任何特定的流。
每条记录的目的地由:
- 键。
-
Partitioner
用于给定的洗牌。 - 分区数。
和数据直接在执行节点之间传递。
从评论来看,你对Spark Streaming架构更感兴趣。如果是这样的话,你应该看看潜入Apache Spark Streaming的执行模型。给你一些概述,可以存在两种不同类型的流:
- 基于接收端,每个流有一个接收节点。
- 直接(没有接收器),其中只将元数据分配给执行器,但直接获取数据。