RDD take()方法如何在内部工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RDD take()方法如何在内部工作?相关的知识,希望对你有一定的参考价值。

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

答案

在RDD的take(n)方法中,Spark开始扫描第一个分区中的元素。如果没有足够的元素,Spark会增加要扫描的分区数。至于采取哪些因素,由以下行确定

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

scala中Iterator的take(n)方法说“选择这个迭代器的第一个'n''值。” - scaladoc。因此,对于将选择哪些元素,我们看到元素是从迭代器的前面选择的。

以上是关于RDD take()方法如何在内部工作?的主要内容,如果未能解决你的问题,请参考以下文章

表单的 post 方法如何在幕后实际工作

collect and take 不适用于 RDD

spark学习---打印RDD内容

数据框架到RDD这段代码无法工作。

scala 常用方法

K-NN 算法如何在 rapidminer 中以相同的距离工作?