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 条评论
登录 后参与评论

相关文章

来自专栏个人分享

MapReduce排序输出

902
来自专栏Java工程师日常干货

实现一个迷你版的RPC前言动手实现RPC

在实际后台服务开发中,比如订单服务(开发者A负责)需要调用商品服务(开发者B负责),那么开发者B会和A约定调用API,以接口的形式提供给A。通常都是B把API上...

743
来自专栏领域驱动设计DDD实战进阶

领域驱动设计案例之领域层实体与聚合根实现

2384
来自专栏加米谷大数据

MapReduce API 基本概念

在正式分析新旧 API 之前,先要介绍几个基本概念。这些概念贯穿于所有 API 之中,因此,有必要单独讲解。 1、 序列化 序列化是指将结构化对象转为字节流以便...

2657
来自专栏祝威廉

Spark Streaming + Spark SQL 实现配置化ETL流程

通常而言,你可能会因为要走完上面的流程而构建了一个很大的程序,比如一个main方法里上百行代码,虽然在开发小功能上足够便利,但是复用度更方面是不够的,而且不利于...

703
来自专栏深度学习计算机视觉

分析类的角色

1-边界类 1-O 负责系统与外界(最终用户)的通讯与交互 职责:转换和翻译交互事件 对内:将外界不同格式的时间和信息 转换为内部能够识别的格式 常见的边...

1984
来自专栏JAVA技术站

Hadoop的mapreduce的简单用法 原

  Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的...

502
来自专栏LanceToBigData

Spring(一)Spring的第一滴血

前言   开始工作了,但是一进来公司本来是做爬虫和数据分析的,但是走了一个后端的,导致我必须要去顶替他的工作。因为这个项目使用的是Spring、   Sprin...

2146
来自专栏用户画像

SSH框架的理解

1、jsp自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 2、包含一个controller se...

562
来自专栏finleyMa

GraphQL 分享 理论篇

目前项目开发比较流行的是前台后分离模式,后台提供接口,前台调用接口,接口书写遵循流行的RESTful API规范

783

扫码关注云+社区