当前位置: 首页 > news >正文

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元素按位置合并为键值对。

 

运行结果:

 

3. 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 接口。

 

 
 


 

 

运行结果:

 

24)  join:连接两个RDD中相同 key 的元素。

运行结果:

 

25)  leftOuterJoin:类似SQL左外连接。

运行结果:

 

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

运行结果:

 

http://www.xdnf.cn/news/707923.html

相关文章:

  • scp 命令
  • Unity开发之Webgl自动更新程序包
  • 4.1.1 Spark SQL概述
  • spark在执行中如何选择shuffle策略
  • Java开发经验——阿里巴巴编码规范实践解析6
  • 【Linux篇】叩响新世界的大门:线程
  • 【stm32开发板】原理图设计(电源部分)附:设计PCB流程
  • SmolVLM2: The Smollest Video Model Ever(七)
  • Kafka核心技术解析与最佳实践指南
  • BPE、WordPiece 与 Unigram:三种主流子词分词算法对比
  • 关于测试小记
  • flutter项目迁移空安全
  • ADQ36-2通道2.5G,4通道5G采样PXIE
  • 5G-A时代与p2p
  • 晶振频率稳定性:5G 基站与航天设备的核心竞争力
  • Axios 如何通过配置实现通过接口请求下载文件
  • 网络渗透基础:信息收集
  • thinkphp 5.1 部分知识记录<一>
  • t013-集团门户网站设计与实现 [基于springboot+Vue 含材料及源码]
  • 机器学习算法--随机森林
  • 13 接口自动化-框架封装之 csv 数据驱动封装和日志
  • SOC-ESP32S3部分:18-串口
  • Linux进程初识
  • 链表经典题目(力扣 easy)
  • 从汇编的角度接密C++函数重载,原来这么简单
  • 人工智能在智能零售中的创新应用与未来趋势
  • Unity Button 交互动画
  • 工厂模式 vs 策略模式:设计模式中的 “创建者” 与 “决策者”
  • Vulhub靶场搭建(Ubuntu)
  • 基于matlab遗传算法和模拟退火算法求解三维装箱优化问题