Spark RDD的Action

RDD的Action是相对Transformation的另一种操作。Transformation代表计算的中间过程,从一个RDD生成新的RDD;而Action代表计算的结束,一次Action调用之后,不再生成新的RDD,结果返回到Driver程序。

Spark RDD的Action

鉴于Action具有这样的特点,所以Action操作是不可以在RDD Transformation内部调用的。比如,下面的调用是不允许的:

rdd1.map(x => rdd2.values.count() * x)

Transformation只是建立计算关系,而Action才是实际的执行者。每个Action都会调用SparkContextrunJob方法向集群正式提交请求,所以每个Action对应一个Job。比如在count的实现中,先提交Job去集群上运行,返回结果到Driver程序,然后调用sum方法获取数量:

/**
 * 返回RDD中的元素数RDD
 */
def count(): Long = sc.runJob(this, Utils.getIteratorSize _).sum
  • Spark RDD的Action已关闭评论
  • 402 views
  • A+
所属分类:未分类
avatar