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

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.lryc.cn/news/2397079.html

相关文章:

  • SQL 中的 `CASE WHEN` 如何使用?
  • Wireshark 使用教程:让抓包不再神秘
  • JWT安全:接收无签名令牌.【签名算法设置为none绕过验证】
  • 什么算得到?什么又算失去?
  • 白银价格查询接口如何用Java进行调用?
  • FreeBSD 14.3 候选版本附带 Docker 镜像和关键修复
  • NodeJS全栈WEB3面试题——P6安全与最佳实践
  • 「Java教案」算术运算符与表达式
  • Ubuntu开机黑屏现象的常见解决方案详解
  • 黑马程序员C++核心编程笔记--4 类和对象--多态
  • 论文写作核心要点
  • [java]eclipse中windowbuilder插件在线安装
  • Ubuntu20.04服务器开启路由转发让局域网内其他电脑通过该服务器连接外网
  • 【Oracle】TCL语言
  • Windows | 总误按Num Lock?修改注册表永久禁用Numlk键使小键盘一直输入数字
  • 2.RV1126-OPENCV Mat理解和AT函数
  • Go 语言 + Word 文档模板:WordZero 引擎如何让企业文档处理效率提升 300%?
  • unidbg patch 初探 微博deviceId 案例
  • 循序渐进 Android Binder(一):IPC 基本概念和 AIDL 跨进程通信的简单实例
  • 网络安全之Web渗透加解密
  • Leetcode 3567. Minimum Absolute Difference in Sliding Submatrix
  • 【LeetCode 题解】两数之和(C++/Python 双解法):从语法到算法的全面解析
  • 【机器学习基础】机器学习入门核心算法:集成学习(Ensemble Learning)
  • 【TMS570LC4357】之相关驱动开发学习记录1
  • RAG入门 - Retriever(1)
  • pyspark实践
  • 内网怎么映射外网ip? 内网的地址快速映射给外网访问用方法
  • 【深度学习新浪潮】多模态模型如何处理任意分辨率输入?
  • ZYNQ移植FreeRTOS和固化和openAMP双核
  • K-匿名模型