我想了解{{1}}是如何运作的,我读了几个主题和博客但是我不确定一件事。
是否一次将所有分区复制到驱动程序节点并创建迭代器?或者它一次复制一个分区的数据,然后创建一个迭代器?
答案 0 :(得分:3)
它会在时间引入一个分区。根据{{3}}
返回包含此RDD中所有元素的迭代器。
迭代器将消耗与此RDD中最大分区一样多的内存。
请注意 这导致多个Spark作业,并且如果输入RDD是广泛转换的结果(例如,使用不同的分区器连接),为了避免重新计算输入,RDD应首先被缓存。
迭代器将“消耗与最大分区一样多的内存”可以理解为只有1个(整个)分区将在驱动程序节点上。
因此,第一个分区被发送到驱动程序。如果继续迭代并到达第一个分区的末尾,则第二个分区将被发送到驱动程序节点。如果未缓存父RDD,这也将导致重新计算数据。