Spark-Core Project

RDD转换算子总结

RDD转换算子分为Value类型、双Value类型和Key - Value类型。

1 、Value类型

  1. map:对数据逐条映射转换,可改变数据类型或值。如 dataRDD.map(num => num * 2

|---|------------------------------------------------------------|
| |
| | |

运行结果:

2)mapPartitions:以分区为单位处理数据,可过滤数据。与 map 相比,它是批处理,性能高但可能占内存。如 dataRDD.mapPartitions(datas => datas.filter(_ == 2)) 。

运行结果:

|---|------------------------------------------------------------|
| |
| | |

3)mapPartitionsWithIndex:类似 mapPartitions ,处理时可获取分区索引。

4)flatMap:先扁平化数据再映射,会将输入对象映射为集合后连成大集合。如 dataRDD.flatMap(list => list) 。

|---|------------------------------------------------------------|
| |
| | |

运行结果:

5)glom:将分区数据转为内存数组,分区不变。

运行结果:

6)groupBy:按规则分组数据,会打乱重组(shuffle)。

运行结果:

7)filter:按规则筛选数据,可能导致数据倾斜。

|---|------------------------------------------------------------|
| |
| | |

运行结果:

8)sample:按规则抽取数据,有放回(泊松算法)或不放回(伯努利算法)。

运行结果:

9)distinct:去重数据,可指定分区数。

运行结果:

10)coalesce:缩减分区,提高小数据集效率。

|---|------------------------------------------------------------|
| |
| | |

运行结果:

11)repartition:内部执行 coalesce ,默认 shuffle=true ,可改变分区数。

运行结果:

12)sortBy:排序数据,可指定排序规则和分区数。

|---|------------------------------------------------------------|
| |
| | |

运算结果:

2、双Value类型

13)intersection:求两个RDD交集。

|---|------------------------------------------------------------|
| |
| | |

运行结果:

14)union:求并集,重复数据不去重。

|---|------------------------------------------------------------|
| |
| | |

运行结果:

15)subtract:求差集,保留源RDD非重复元素。

|---|------------------------------------------------------------|
| |
| | |

运行结果:

16)zip:将两个RDD元素按位置合并为键值对。

运行结果:

  1. Key - Value类型

17)partitionBy:按指定 Partitioner 重新分区,默认分区器为HashPartitioner 。

运行结果:

18)groupByKey:按 key 分组 value 。

运行结果:

19) reduceByKey:按 key 聚合 value ,可预聚合,性能高。

运行结果:

20)aggregateByKey:分区内和分区间按不同规则计算。

运行结果:

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

运行结果:

22)combineByKey:通用聚集函数,可改变数据结构。

运行结果:

23)sortByKey:按 key 排序, key 需实现 Ordered 接口。

|---|------------------------------------------------------------|
| |
| | |

运行结果:

  1. join:连接两个RDD中相同 key 的元素。

运行结果:

  1. leftOuterJoin:类似SQL左外连接。

运行结果:

  1. cogroup:将相同 key 的元素分组到一个RDD中。

运行结果:

相关推荐
tg_xianheyun5 小时前
CDN节点分布如何影响网页加载速度和用户体验
服务器·cdn加速·全球访问优化
lsh曙光6 小时前
延时at指令和定时cron指令
linux·服务器·网络
圆山猫6 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
布鲁飞丝6 小时前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible
XR1234567886 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
似的8356 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
HiDev_7 小时前
【非标自动化】2、认识元器件(直线模组)
运维·自动化
夏殇之殁8 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
龙仔7258 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
我不管我就要叫小猪8 小时前
嵌入式Linux----网络通信
linux·运维·服务器