spark转化操作

news2024/9/20 17:00:12

文章目录

  • 转化操作
    • Transformer算子概念
    • 单RDD转换函数
    • 多RDD转换函数
    • map与flatmap

转化操作

由于spark的惰性计算特性,RDD只有在第一次行动操作中被用到时才会真正进行计算,因此我打算将文章内容分为"转化操作"和"行动操作"两部分,同时因为pair RDD(RDD中的元素是键值对)的部分api较为特殊

Transformer算子概念

RDD的操作算子分为两类:

  • Transformation。用来对RDD进行转化,这个操作时延迟执行的(或者说是 Lazy 的);返回一个新的RDD
  • Action。用来触发RDD的计算;得到相关计算结果 或者 将结果保存的外部系统 中;返回结果int、double、集合(不会返回新的RDD)

每一次 Transformation 操作都会产生新的RDD,供给下一个“转换”使用; 转换得到的RDD是惰性求值的。也就是说,整个转换过程只是记录了转换的轨迹, 并不会发生真正的计算,只有遇到 Action 操作时,才会发生真正的计算,开始从血 缘关系(lineage)源头开始,进行物理的转换操作;

在这里插入图片描述

单RDD转换函数

对数据rdd{1,2,3,3}进行RDD转换

函数举例运行效果解释说明
maprdd.map(x=>x+2){3,4,5,5}对RDD中每一个元素进行操作,对每个元素都+2
flatMaprdd.flatMap(x=>x.to(3)){1,2,3,2,3,3,3}遍历当前每个元素,然后生成从当前元素到3的新RDD集合([当前元素,3]),通常用于切分单词
filterrdd.filter(x=>x!=3){1,2}过滤RDD中不等于3的元素
distinctrdd.distinct(){1,2,3}对RDD去重
samplerdd1.sample(false,0.5)随机随机数生成RDD子数据集

map()函数

val testList = List(1, 2, 3, 3)
val testRdd = sc.parallelize(testList)
testRdd.map(x => x + 2).foreach(x => print(s"$x "))
// 输出:3 4 5 5

多RDD转换函数

对数据rdd1{1,2,3}和rdd2{2,4,6}进行RDD转换

函数举例运行结果解释说明
unionrdd1.union(rdd2){1,2,3,2,4,6}rdd1返回两个RDD的合并,不去重
intersectionrdd1.intersection(rdd2){2}rdd1返回两个RDD的交集,去重
subtractrdd1.subtract(rdd2){1,3}与intersection函数类似,rdd1返回在rdd1中出现,在rdd2中没有出现的元素,不去重(即移除rdd2的内容,通常用于移除训练数据)
cartesianrdd1.cartesian(rdd2){(1,2),(1,4),(1,6),(2,2),(2,4),(2,6),(3,2),(3,4),(3,6)}求笛卡尔积,对两个RDD数据进行笛卡尔计算,返回(T,U)Pair模板类型的RDD数据

unon()函数
相当于集合运算的并集,生成一个包含两个RDD中所有元素的RDD,要求两个RDD的元素类型相同

val testList1 = List(1, 2, 3)
val testList2 = List(2, 4, 6)
val testRdd1 = sc.parallelize(testList1)
val testRdd2 = sc.parallelize(testList2)
testRdd1.union(testRdd2).foreach(ele => print(s"$ele "))
// 输出:1 2 3 2 4 6

map与flatmap

下图说明了map和flatMap的区别,flatMapRDD中是一个个迭代器中的具体元素,但是map中是一个个迭代器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W0auc6Ug-1674868515684)(转化操作.assets/image-20210415162443257.png)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【web】微信小程序笔记小结(视图与逻辑)

过完年回来干正事了orz 来源:黑马程序员前端微信小程序开发教程 目录 I. 页面导航 ① 概念 ② 导航方式 1)声明式导航 ※※ 导航到 tabBar 页面 ※※ 导航到非 tabBar 页面 ※※ 后退导航 2)编程式导航 ※※ 导航到 tabBar 页面…

Nature立新规:ChatGPT等大模型不可以成为作者

众所周知,AI 的超参数决定着模型学习效果和速度。相比普通机器学习任务,深度学习需要的训练时间较长,因此调参技巧就显得尤为重要。 但鉴于深度学习「炼丹」的特性,不同的模型需要不同的超参数,而每个超参的意义又不同…

【头歌】汉诺塔(Hanoi)的递归算法

任务描述本关任务:汉诺塔(Hanoi)的递归算法。相关知识相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标&a…

C语言中数组变量作为函数参数传值的两种方式:数组类型 指针类型 以及“C语言中数组变量(名)的本质是指针变量”

文章目录Intro & SummaryCode & Output运行截图Code关于数组长度在被调函数中的计算错误运行截图 & 警告信息Code数组变量是一类特殊的、指向自己的指针变量Intro & Summary 我在 main 函数中定义了一个数组,要将该数组作为参数传递给其他方法。那…

Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现

文章目录一、梯度下降基本原理与学习率1. 数据背景与最小二乘法求解2. 一维梯度下降基本流程2.1 参数移动第一步2.2 梯度下降的多轮迭代3. 梯度下降算法特性与学习率二、梯度下降一般建模流程与多维梯度下降1. 多维梯度下降与损失函数可视化2. 梯度下降计算流程3. 二维梯度下降…

jvm学习的核心(四)---执行引擎和字符串

知识点总结于b站宋红康老师,视频链接 文章目录1.执行引擎1.1.执行引擎概述1.2.执行引擎的工作流程1.3.jvm的解释器和即时编译器(JIT)1.3.1.解释器,即时编译器概述1.3.2.常见即时编译器1.3.3.热点代码探测1.String Table1.1 string…

Go语言基础入门第三章

常量 常量是一个简单值的标识符,在程序运行时,不会被修改的量。 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。 const identifier [type] value可以省略类型说明符[type],因为编译器…

法律常识(三)《合同法》中的借款合同租赁合同摘录

目录 参考 一、借款合同 二、租赁合同 参考 中华人民共和国合同法 一、借款合同 第一百九十六条 借款合同是借款人向贷款人借款,到期返还借款并支付利息的合同。 第一百九十七条 借款合同采用书面形式,但自然人之间借款另有约定的除外。借款合同…

瑞吉外卖 对象转换器 公共字段自动填充 文件上传/下载

https://blog.csdn.net/weixin_43715214/category_12022798.html大佬记录项目介绍day01功能架构(1)用户层本项目中在构建系统管理后台的前端页面,我们会用到H5、Vue.js、ElementUI等技术。而在构建移动端应用时,我们会使用到微信小…

Red Giant Magic Bullet Suite介绍

Red Giant Magic Bullet Suite介绍什么是Magic Bullet SuiteMagic Bullet Suite功能介绍什么是Magic Bullet Suite Magic Bullet Suite是电影制作人不可或缺的一套调色降噪插件,它能够为您制作出和好莱坞一样的效果,为电影制作人提供专业的色彩校正。可…

excel函数应用:最简单的条件求和函数DSUM

SUM系列求和函数是我们日常工作中最常用的函数,相信大部分朋友对SUMIF、SUMIFS、SUMPRODUCT等函数都已经比较熟悉了。但是有一个求和函数大家可能都不熟悉,它就是DSUM函数,用于求数据库中记录的满足给定条件的的字段(列&#xff0…

在中国社科院与美国杜兰大学金融管理硕士项目就读,重焕青春活力

在职场摸爬滚打多年后的你,是否有觉得内心疲惫? 是否进入到职场倦怠期?今天是春节后的首个工作日,新的一年意味着新的开始。你有想过在职继续攻读硕士学位吗?在中国社科院与美国杜兰大学金融管理硕士项目就读&#xff…

vue中实现打印

一、VUE 集成 LODOP插件打印 VUE 集成LODOP插件打印 Lodop、C-Lodop使用说明及样例 C-Lodop插件官网:功能演示 - Lodop和C-Lodop官网主站 参考文章:VUE 集成 LODOP插件打印_廷贺的博客-CSDN博客 二、winodw.print() 打印 print() 方法用于打印当前…

vs2015软件打包及常见问题解决方法

一、如程序文件是64位,而项目设置32位,打包项目编译时遇到如下问题 解决办法:选择打包程序项目的属性窗口设置TargetPlatform属性为对应的值,本项目的文件是64位的所以设置打包生成的程序为64位的,如下: …

【可解释性机器学习】排列重要性(Permutation Importance)及案例分析详解

Permutaion Importance:排列重要性引言工作原理代码示例排列重要性结果解读模型检验特征选择补充分析Partial Dependency PlotSharpley ValueLIME总结参考资料当训练得到一个模型之后,除了对模型的预测感兴趣之外,我们往往还想知道模型中哪些…

DDOS渗透与攻防(三)之socktress攻击

系列文章 DDOS渗透与攻防(一)之拒绝服务攻击概念介绍 DDOS渗透与攻防(二)之SYN-Flood攻击 socktress攻击 攻击协议原理介绍说明-socktress 2008年有Jack C.Louis发现,针对TCP服务的拒绝服务攻击: 消耗被攻击目标系统资源,与攻击目标建立…

xml配置JedisUtil

一.背景 习惯了Bean注解方式往sping容器中注入对象,现使用xml方式注入Bean对象总结下,顺便用帮女朋友解决的Jedis问题当做案例来总结。 二.配置JedisPool 从源码来看,JedisPool的构造函数有N多种 我们使用如下的构造函数来实例化JedisPool…

docker部署Nginx和Tomcat

文章目录 前言 目录 文章目录 前言 一、docker部署Nginx 二、docker部署Tomcat 总结 一、docker部署Nginx 下载镜像:docker pull nginx 后台运行镜像 -d 后台运行 --name"nginx01" 给容器命名 -p 宿主机端口:容器内部端口 docker run -d --name"…

2.SpringAop的jdkcglib动态代理xml注解实现切面

1.Spring 的 AOP 简介 1.1 什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP 是 OOP 的延续,是软件开发中的一个热点,也是…

Linux常用命令——rsync命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) rsync 远程数据同步工具 补充说明 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步&#xff0c…