collect

将不同分区的数据按照分区顺序采集到Driver端内存中

image.png

foreach

是在Executor端遍历内存数据

image.png

代码

  1. val rdd = sc.makeRDD(List(1,2,3,4))
  2. rdd.collect().foreach(println)
  3. print("*"*12)
  4. rdd.foreach(println)

image.png

RDD的方法和Scala集合对象的方法不一样
集合对象的方法都是在同一个节点的内存中完成的
RDD的方法可以将计算逻辑发送到Executor端(分布式节点执行)
为了区分不同的处理效果,所以将RDD的方法称为算子

RDD的方法外部的操作都是在Driver端执行的,方法内部的逻辑代码是在Executor端执行