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()方法如何在内部工作?的主要内容,如果未能解决你的问题,请参考以下文章