SparkCore系列-3、RDD 函数的介绍及分类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

大数据系列文章目录

官方网址http://spark.apache.org/https://databricks.com/spark/about
在这里插入图片描述

前言

RDD 的函数部分比较多,我把函数这部分分为3篇文章来介绍,第一篇文章主要介绍函数的分类 Transformation函数和Action函数,第二篇文章介绍RDD的重要函数,第三篇文章介绍如何使用这些函数,函数的练习,RDD的持久化。

函数的介绍

有一定开发经验的读者应该都使用过多线程,利用多核 CPU 的并行能力来加快运算速率。在开发并行程序时,可以利用类似 Fork/Join 的框架将一个大的任务切分成细小的任务,每个小任务模块之间是相互独立的,可以并行执行,然后将所有小任务的结果汇总起来,得到最终的结果。

一个非常好的例子便是归并排序,对整个序列进行排序时,可以将序列切分成多个子序列进行排序,然后将排好序的子序列归并起来得到最终的结果。

在这里插入图片描述
对Hadoop有所了解的读者都知道 map、reduce 操作。对于大量的数据,可以通过 map 操作让不同的集群节点并行计算,之后通过 reduce 操作将结果整合起来得到最终输出。

函数分类

对于 Spark 处理的大量数据而言,会将数据切分后放入RDD作为Spark 的基本数据结构,开发者可以在 RDD 上进行丰富的操作,之后 Spark 会根据操作调度集群资源进行计算。总结起来, RDD 的操作主要可以分为 Transformation 和 Action 两种。
在这里插入图片描述
官方文档:http://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-operations

RDD中操作(函数、算子)分为两类:

1)、Transformation转换操作:返回一个新的RDD

  • which create a new dataset from an existing one
  • 所有Transformation函数都是Lazy,不会立即执行,需要Action函数触发

2)、Action动作操作:返回值不是RDD(无返回值或返回其他的)

  • which return a value to the driver program after running a computation on the datase
  • 所有Action函数立即执行(Eager),比如count、first、collect、take等

在这里插入图片描述

此外注意RDD中函数细节:

第一点:RDD不实际存储真正要计算的数据,而是记录了数据的位置在哪里,数据的转换关系(调用了什么方法,传入什么函数);

第二点:RDD中的所有转换都是惰性求值/延迟执行的,也就是说并不会直接计算。只有当发生一个要求返回结果给Driver的Action动作时,这些转换才会真正运行。之所以使用惰性求值/ 延迟执行,是因为这样可以在Action时对RDD操作形成DAG有向无环图进行Stage的划分和并行优化,这种设计让Spark更加有效率地运行。

Transformation函数

在Spark中Transformation操作表示将一个RDD通过一系列操作变为另一个RDD的过程,这个操作可能是简单的加减操作,也可能是某个函数或某一系列函数。值得注意的是Transformation操作并不会触发真正的计算,只会建立RDD间的关系图。

如下图所示,RDD内部每个方框是一个分区。假设需要采样50%的数据,通过sample函数, 从 V1、V2、U1、U2、U3、U4 采样出数据 V1、U1 和 U4,形成新的RDD。

在这里插入图片描述
常用Transformation转换函数,加上底色为重要函数,重点讲解常使用函数:

在这里插入图片描述

Action函数

不同于Transformation操作,Action操作代表一次计算的结束,不再产生新的 RDD,将结果返回到Driver程序或者输出到外部。所以Transformation操作只是建立计算关系,而Action 操作才是实际的执行者。每个Action操作都会调用SparkContext的runJob 方法向集群正式提交请求,所以每个Action操作对应一个Job。

常用Action执行函数,加上底色为重要函数,后续重点讲解。

在这里插入图片描述

下回分解

RDD 函数的第一篇文章就介绍这么多,下篇将介绍RDD的重要函数。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术武器库

一句真诚的谢谢,胜过千言万语

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值