toLocalIterator如何工作?

时间:2018-03-27 13:35:53

标签: apache-spark hadoop pyspark hadoop2

我想了解{{1}}是如何运作的,我读了几个主题和博客但是我不确定一件事。

是否一次将所有分区复制到驱动程序节点并创建迭代器?或者它一次复制一个分区的数据,然后创建一个迭代器?

1 个答案:

答案 0 :(得分:3)

它会在时间引入一个分区。根据{{​​3}}

  

返回包含此RDD中所有元素的迭代器。

     

迭代器将消耗与此RDD中最大分区一样多的内存。

     

请注意   这导致多个Spark作业,并且如果输入RDD是广泛转换的结果(例如,使用不同的分区器连接),为了避免重新计算输入,RDD应首先被缓存。

迭代器将“消耗与最大分区一样多的内存”可以理解为只有1个(整个)分区将在驱动程序节点上。

因此,第一个分区被发送到驱动程序。如果继续迭代并到达第一个分区的末尾,则第二个分区将被发送到驱动程序节点。如果未缓存父RDD,这也将导致重新计算数据。