开发者学堂课程【大数据Spark2020最新课程(知识精讲与实战演练)第二阶段:RDD 算子_ Action _ take】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/689/detail/11983
RDD 算子_ Action _ take
内容介绍
一、前言
二、实例讲解
三、总结
一、前言
接下来介绍几个用于获取数据的算子,前面我们接触了一个获取数据的算子,叫做 collect 。有一个叫做 first 的算子,也是用于获取数据,与 collect 获取整个集合不同 , first 只获取第一个元素。叫做 take 的算子可以用于获取前 n 个元素。叫做 takeSample 的算子与前面的 Sample 一样,但它是直接拿到结果,而 Sample 是在数据整理完后,再经过 Action 获取结果。
二、实例讲解
进入代码,创建新方法,创建集合,定义几个元素,然后 print ,调用 first 、 take 和 takeSample ,完成整个代码的编写,运行代码,查看结果。 take 和 takeSample 返回的结果是一个数组,需要特殊处理一下。代码如下:
@Test
def take() : Unit = {
val rdd = sc.parallelize(Seq(1,2,3,4,5,6))
rdd.take(num = 3).foreach(item => println(item))
println(rdd.first())
rdd.takeSample(withReplacement = true,num = 3)).foreach(item => println(item))
}
通过结果可以看出,这三个结果中间还有额外的 Log 。 take 的结果有三个, first 的结果是一个, takeSample 的结果有三个,出现了放回现象。如果想改成无放回现象,只需要把代码中的 true 改成 flase 即可。
三、总结
简单总结一下, take 和 takeSample 都是获取数据,一个是直接获取,一个是采样获取。 first 在一般情况下, Action 会从所有分区获取数据,速度相对较慢,但它只获取第一个元素,只会处理第一个分区,无需处理所有数据,处理速度较快。