RDD take()方法在内部工作



我知道take(n)将返回rdd的n个元素,但是Spark如何决定从哪个分区来调用这些元素以及应该选择哪些元素?它是否在驱动程序上内部维护索引?

在rdd的take(n)方法中,Spark开始扫描第一个分区的元素。如果其中没有足够的元素,Spark会增加从中扫描的分区数量。至于由以下行确定的元素

确定的元素
val res = sc.runJob(this, (it: Iterator[T]) => it.take(left).toArray, p)

Scala中迭代器的采用方法(n)方法说"选择首先'''''''值。" - scaladoc。因此,至于选择哪些元素,我们会看到从迭代器的正面选择元素。

最新更新