千家信息网

spark RDD算子中Actions算子怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要为大家展示了"spark RDD算子中Actions算子怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"spark RDD算子中Actio
千家信息网最后更新 2026年11月03日spark RDD算子中Actions算子怎么用

这篇文章主要为大家展示了"spark RDD算子中Actions算子怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"spark RDD算子中Actions算子怎么用"这篇文章吧。

Actions算子

本质上在Actions算子中通过SparkContext执行提交作业的runJob操作,触发了RDD DAG的执行。

1.无输出

(1)foreach(f)

对RDD中的每个元素都应用f函数操作,不返回RDD和Array,而是返回Uint。

图3-25表示foreach算子通过用户自定义函数对每个数据项进行操作。本例中自定义函数为println(),控制台打印所有数据项。

2.HDFS

saveAsTextFile(path, compressionCodecClass=None)

函数将数据输出,存储到HDFS的指定目录。
将RDD中的每个元素映射转变为(Null, x.toString),然后再将其写入HDFS。

图3-26中左侧的方框代表RDD分区,右侧方框代表HDFS的Block。通过函数将RDD的每个分区存储为HDFS中的一个Block。

3.Scala集合和数据类型

(1)collect()

collect将分布式的RDD返回为一个单机的scala Array数组。在这个数组上运用scala的函数式操作。

图3-28中的左侧方框代表RDD分区,右侧方框代表单机内存中的数组。通过函数操作,将结果返回到Driver程序所在的节点,以数组形式存储。

(2)collectAsMap()

collectAsMap对(K, V)型的RDD数据返回一个单机HashMap。对于重复K的RDD元素,后面的元素覆盖前面的元素。

图3-29中的左侧方框代表RDD分区,右侧方框代表单机数组。数据通过collectAsMap函数返回给Driver程序计算结果,结果以HashMap形式存储。

(3)reduceByKeyLocally(func)

实现的是先reduce再collectAsMap的功能,先对RDD的整体进行reduce操作,然后再收集所有结果返回为一个HashMap。

(4)lookup(key)

Lookup函数对(Key, Value)型的RDD操作,返回指定Key对应的元素形成的Seq。这个函数处理优化的部分在于,如果这个RDD包含分区器,则只会对应处理K所在的分区,然后返回由(K, V)形成的Seq。如果RDD不包含分区器,则需要对全RDD元素进行暴力扫描处理,搜索指定K对应的元素。

图3-30中的左侧方框代表RDD分区,右侧方框代表Seq,最后结果返回到Driver所在节点的应用中。

(5)count()

count返回整个RDD的元素个数。内部函数实现如下。
在图3-31中,返回数据的个数为5。一个方块代表一个RDD分区。

(6)top(num, key=None)

top可返回最大的k个元素。
相近函数说明如下。

top返回最大的k个元素。

take返回最小的k个元素。

takeOrdered返回最小的k个元素,并且在返回的数组中保持元素的顺序。

first相当于top(1)返回整个RDD中的前k个元素,可以定义排序的方式Ordering[T]。返回的是一个含前k个元素的数组。

(7)reduce(f)

通过函数func(接受两个参数,返回一个参数)聚集数据集中的所有元素。这个功能必须可交换且可关联的,从而可以正确的被并行执行。

例子:

>>> from operator import add>>> sc.parallelize([1, 2, 3, 4, 5]).reduce(add)15>>> sc.parallelize((2 for _ in range(10))).map(lambda x: 1).cache().reduce(add)10

(8)fold(zeroValue, op)

fold和reduce的原理相同,但是与reduce不同,相当于每个reduce时,迭代器取的第一个元素是zeroValue。

>>> from operator import add>>> sc.parallelize([1, 2, 3, 4, 5]).fold(0, add)15

以上是"spark RDD算子中Actions算子怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

元素 函数 算子 代表 数据 方框 数组 结果 单机 右侧 存储 内容 所在 篇文章 处理 最大 最小 个数 功能 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 云之行互联网科技 互联网与科技金融数据 港股互联网科技股 麻工互联网科技 深圳互联网络科技有限公司 互联网科技排名 迪茉互联网科技 菲比寻常互联网科技 无锡溥仪互联网科技有限公司 和信科技工业互联网 新兴科技互联网创新大赛颁奖典礼 米聚互联网科技南京有限公司排面 电子科技大学互联网创业大赛 爱医互联网络科技 徐州市互联网科技有限公司 锡山区互联网智能科技产品供应 广州有谷有贝互联网科技有限公司 福仕德教育科技互联网 互联网企业和网络科技有限公司 互联网科技图片 科技企业和互联网企业 朗涯互联网科技 科技互联网的估值 互联网教育科技公司vipkid 互联网企业和科技型企业 宝灵互联网科技有限公司 互联网科技公司营业执照怎么办理 烟台灵鸽互联网科技有限公司 厦门江牛科技互联网
0