欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Spark core编程之RDD 转换算子分类

Spark core编程之RDD 转换算子分类

2025/4/19 3:31:19 来源:https://blog.csdn.net/2401_85482551/article/details/147117093  浏览:    关键词:Spark core编程之RDD 转换算子分类

一、RDD 转换算子分类:根据数据处理方式,RDD 算子分为 Value 类型、双 Value 类型和 Key - Value 类型。

1.Value 类型算子

map:逐条映射转换数据,可改变数据类型或值

mapPartitions:以分区为单位处理数据,可进行任意操作,能增删数据,但可能占用大量内存,内存有限时不推荐使用。与 map 相比,map 是分区内串行处理数据,mapPartitions 是分区批处理。

mapPartitionsWithIndex:类似 mapPartitions,处理数据时可获取当前分区索引。

flatMap:先扁平化数据再映射处理,区别于 map 将每条输入数据映射为一个新对象,flatMap 会将输入对象映射为新集合并连接成大集合。

glom:把同一分区数据转换为内存数组,分区不变。

groupBy:按指定规则分组数据,会打乱重组数据(shuffle),可能导致数据倾斜。

filter:筛选过滤数据,保留符合规则的,丢弃不符合的,可能造成分区内数据不均衡。

sample:按规则抽取数据,分不放回(伯努利算法)和放回(泊松算法)两种方式。

distinct:去除数据集中重复数据,可指定分区数。

coalesce:根据数据量缩减分区,提升小数据集执行效率,减少任务调度成本。

repartition:内部执行 coalesce 操作,默认 shuffle 为 true,可实现分区数增减。

sortBy:排序数据,可先处理数据再按处理结果排序,默认升序,会发生 shuffle,新 RDD 分区数与原 RDD 一致。

2.双 Value 类型算子

intersection:求两个 RDD 的交集。

union:求两个 RDD 的并集,重复数据不会去重。

subtract:以源 RDD 元素为主,去除重复元素,保留源 RDD 其他元素(求差集)。

zip:将两个 RDD 元素以键值对形式合并,Key 为第一个 RDD 元素,Value 为第二个 RDD 相同位置元素。

3.Key - Value 类型算子

partitionBy:按指定 Partitioner 重新分区,Spark 默认分区器是 HashPartitioner。

groupByKey:根据 key 对 value 进行分组,存在 shuffle 操作,但无预聚合功能。

reduceByKey:按相同 Key 聚合 Value,可在 shuffle 前预聚合,减少落盘数据量,性能优于 groupByKey ,兼具分组和聚合功能。

aggregateByKey:按不同规则进行分区内和分区间计算。

foldByKey:当分区内和分区间计算规则相同时,是 aggregateByKey 的简化版。

combineByKey:通用的对 key - value 型 rdd 进行聚集操作的函数,可让第一个数据转换结构,分区内和分区间计算规则不同。

sortByKey:对 (K, V) 的 RDD 按 key 排序,K 需实现 Ordered 接口。

join:连接两个 (K, V) 和 (K, W) 类型的 RDD,返回相同 key 对应的元素连接在一起的 (K, (V, W)) 的 RDD

leftOuterJoin:类似 SQL 左外连接。

cogroup:在 (K, V) 和 (K, W) 类型的 RDD 上调用,返回 (K, (Iterable<V>, Iterable<W>)) 类型的 RDD

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词