Spark RDD的Action

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

鉴于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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏简单聊聊Spark

Spark内核分析之DAGScheduler划分算法实现原理讲解(重要)

        接着上一篇,我们接着来分析下一个非常重要的组建DAGScheduler的运行原理是怎么实现的;通过之前对Spark的分析讲解,我们的Spark作...

1572
来自专栏祝威廉

Spark Streaming 误用.transform(func)函数导致的问题解析

特定情况你会发现UI 的Storage标签上有很多新的Cache RDD,然后你以为是Cache RDD 不被释放,但是通过Spark Streaming 数据...

913
来自专栏Albert陈凯

Spark系列课程-00xxSpark RDD持久化

我们这节课讲一下RDD的持久化 ? RDD的持久化 这段代码我们上午已经看过了,有瑕疵大家看出来了吗? 有什么瑕疵啊? 大家是否还记得我在第二节课的时候跟大...

4128
来自专栏Jed的技术阶梯

Spark性能调优02-代码调优

代码调优,就是要让大家了解以下一些Spark基本开发原则,包括:RDD lineage设计、算子的合理使用、特殊操作的优化等。在开发过程中,时时刻刻都应该注意以...

1822
来自专栏Albert陈凯

2018-11-07 Spark应用程序开发参数调优深入剖析-Spark商业调优实战

本套系列博客从真实商业环境抽取案例进行总结和分享,并给出Spark商业应用实战指导,请持续关注本套博客。版权声明:本套Spark商业应用实战归作者(秦凯新)所有...

1184
来自专栏Albert陈凯

4.3 RDD操作

4.3 RDD操作 RDD提供了一个抽象的分布式数据架构,我们不必担心底层数据的分布式特性,而应用逻辑可以表达为一系列转换处理。 通常应用逻辑是以一系列转换(...

2807
来自专栏LhWorld哥陪你聊算法

【Spark篇】---Spark中控制算子

Spark中控制算子也是懒执行的,需要Action算子触发才能执行,主要是为了对数据进行缓存。

1003
来自专栏Jed的技术阶梯

Spark-RDD持久化

使用不同参数的组合构造的实例被预先定义为一些值,比如MEMORY_ONLY代表着不存入磁盘,存入内存,不使用堆外内存,不进行序列化,副本数为1,使用persis...

2313
来自专栏个人分享

Spark作业调度

    Spark在任务提交时,主要存在于Driver和Executor的两个节点.

1991
来自专栏大数据-Hadoop、Spark

Spark Streaming + Kafka整合

2755

扫码关注云+社区

领取腾讯云代金券