3.2 动作
Spark中也有相应的动作函数,这些动作即可生成我们所需的最终结果,也是因为这些动作才真正触发了Spark的调度
3.2.1 foreach
foreach()函数是对RDD中的每个元素调用函数,结果为Unit,即空类型
如:
val disData1=sc.parallelize(Array(1,2,3,4),2)
d.foreach(println)
结果:1,2,3,4
3.2.2 collect
collect()函数在上面已经提到过,就是将RDD的所有元素转换为一个数组
例子就不单独贴出来了,上面的许多例子中已有
3.2.3 reduce
reduce()函数是Spark中用到最多的函数,它通常将RDD中的元素按照一定的函数进行整合,从而减少元素,最终的结果为特定类型的元素,它调用的函数通常有两个输入参数
如:
val disData1=sc.parallelize(Array(1,2,3,4),2)
val d=disData1.reduce((a,b)=>a+b)
结果:d=10
3.2.4 fold & aggregate
这两个动作应该是对数据进行聚合,至于具体的操作我也搞不懂,鉴于它不常用,就先放着吧
3.2.5 count
count()函数统计RDD中元素的个数,结果是一个Long型的整数
如:
val disData1=sc.parallelize(Array(1,2,3,4),2)
val d=disData1.count
结果:d=4
3.2.6 take
take(n)函数从RDD中的第一个分区开始依次取出n个元素,结果返回一个数组,存放取出的元素
如:
val disData1=sc.parallelize(Array(1,2,3,4),2)
val d=disData1.take(3)
结果:d=Array(1,2,3)
感觉它与之前提到过的takeSample()作用类似,都是取元素,不过take并未用到样本选取器
3.2.7 max & min
max()和min()函数返回RDD中最大和最小的元素
如:
val disData1=sc.parallelize(Array(1,2,3,4),2)
val d=disData1.max
结果:d=4
如:
val disData1=sc.parallelize(Array(1,2,3,4),2)
val d=disData1.min
结果:d=1
3.2.8 saveAsTextFile
saveAsTextFile()函数将RDD存储在指定路径下,它会生成一个文件,文件中有各个分区的结果所组成的crc文件
未完待续。。。