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

Spark-Scala语言实战(10)

在之前的文章中,我们学习了如何在spark中使用RDD的filter,distinct,intersection三种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

Spark-Scala语言实战(9)-CSDN博客文章浏览阅读927次,点赞25次,收藏18次。今天开始的文章,我会带给大家如何在spark的中使用我们的RDD方法,今天学习RDD方法中的filter,distinct,intersection三种方法,并进行一代。希望我的文章能帮助到大家,也欢迎大家来我的文章下交流讨论,共同进步。https://blog.csdn.net/qq_49513817/article/details/137205627?今天的文章,我会继续带着大家如何在spark的中使用我们的RDD方法。今天学习RDD方法中的cartesian,subtract两种方法。

目录

一、知识回顾

二、RDD方法

1.cartesian

2.subtract

拓展-方法参数设置与笛卡尔积

1.方法参数设置

 a.cartesian方法

b. subtract方法

2.笛卡尔积


一、知识回顾

 上一篇文章中我们学习了RDD的三种方法,分别是filter,distinct,intersection。

ilter()方法是一种转换操作,用于过滤RDD中的元素。例如昨天的过滤偶数出来。

当然,你也可以选择过滤奇数,可以过滤被3整除的数,全凭自己所需

distinct方法是一种转换操作,用于RDD的数据去重

去除我们的重复数据,在一些特定场景,能让我们的数据更简洁,更直观

intersectio方法用于求出两个RDD的共同元素 

现在,开始今天的学习吧~ 

二、RDD方法

1.cartesian

  • cartesian()方法可将两个集合的元素两两组合成一组,即求笛卡儿积。
  • 创建两个RDD,分别有3个元素,通过cartesian()方法求两个RDD的笛卡儿积。
import org.apache.spark.{SparkConf, SparkContext}object p1 {def main(args: Array[String]): Unit = {val conf=new SparkConf().setMaster("local").setAppName("p2")val sc=new SparkContext(conf)val p1 = sc.parallelize(Seq(1, 2, 3))val p2 = sc.parallelize(Seq("A", "B", "C"))// 对两个RDD执行cartesian操作val pp = p1.cartesian(p2)val ppp = pp.collect()ppp.foreach { case (x, y) => println(s"($x, $y)") }}
}

 可以看到我我们创建了两个集合为p1和p2,再使用cartesian进行求笛卡尔积,最后已每个输出为仅有x,y两个元素的元组形式进行遍历输出。

运行代码,看看结果

可以看到成功输出了笛卡尔积 

2.subtract

  • subtract()方法用于将前一个RDD中在后一个RDD出现的元素删除,可以认为是求补集的操作,返回值为前一个RDD去除与后一个RDD相同元素后的剩余值所组成的新的RDD。两个RDD的顺序会影响结果。
  • 创建两个RDD,分别为rdd1rdd2,包含相同元素和不同元素,通过subtract()方法求rdd1rdd2彼此的补集。
import org.apache.spark.{SparkConf, SparkContext}object p1 {def main(args: Array[String]): Unit = {val conf=new SparkConf().setMaster("local").setAppName("p2")val sc=new SparkContext(conf)val p1 = sc.parallelize(Seq(1, 2, 3, 4, 5))val p2 = sc.parallelize(Seq(3, 4, 5, 6, 7))// 对p1执行subtract操作,移除p2中存在的元素val pp = p1.subtract(p2)val ppp = pp.collect()ppp.foreach(println)}
}

可以看到我们的代码创建了一个p1与p2,它们中间有共同元素3,4,5,那么对p1使用 subtract方法移除与p2共同元素后,打印出来应该只有1与2,现在我们运行代码看看是否与所预期一致。

可以看到成功输出1,2,代码有效,快去练习吧~ 

拓展-方法参数设置与笛卡尔积

1.方法参数设置

 a.cartesian方法

参数/属性说明使用例子不同参数/属性的效果
RDD2另一个RDD,用于计算笛卡尔积RDD1.cartesian(RDD2)不同的RDD2会导致不同的笛卡尔积结果。笛卡尔积的大小是RDD1和RDD2大小的乘积。
随着RDD1和RDD2的大小增加,笛卡尔积的结果集急剧增大。
合适的分区策略可以提高cartesian操作的性能。

b. subtract方法

参数/属性说明使用例子不同参数/属性的效果
RDD2从当前RDD中去除与RDD2相同的元素RDD1.subtract(RDD2)不同的RDD2会导致从RDD1中去除的元素数量和内容不同。
numPartitions(可选)结果RDD的分区数量RDD1.subtract(RDD2, numPartitions)如果指定,则控制结果RDD的分区数量,影响计算的并行度和性能。
如果不指定,通常使用默认分区策略。
数据分布RDD中数据的分布情况不均匀的数据分布可能导致某些分区上的计算任务比其他分区更重。
优化的数据分布可以提高subtract操作的性能。
重复元素RDD中可能存在的重复元素subtract操作不会特殊处理重复元素,它们会按照正常规则被去除或保留。

2.笛卡尔积

 笛卡尔积是数学术语,又称直积。假设集合A={a,b},集合B={0,1,2},则A和B的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合。类似的,多个二元组集合的笛卡尔积是各集合中所有二元组的一个组合,组合的前提是各集合中的二元组数目相等。做笛卡尔积的两个集合A和B中可以不含有重复元素,也可以包含重复元素。

大数据中,笛卡尔积的作用主要体现在数据组合和扩展方面。具体来说,当需要对两个或多个数据集进行组合时,可以使用笛卡尔积来生成所有可能的组合。这种组合方式在数据分析、数据挖掘以及机器学习等领域中非常有用,因为它可以帮助我们创建更丰富的数据集,以便进行更深入的分析和建模。

相关文章:

Spark-Scala语言实战(10)

在之前的文章中,我们学习了如何在spark中使用RDD的filter,distinct,intersection三种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-…...

【C++庖丁解牛】高阶数据结构---红黑树详解(万字超详细全面介绍红黑树)

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 前言1.红黑树的概念2.红黑…...

汽车网络安全管理

汽车网络安全管理 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事&#xff0c…...

文本自动粘贴编辑器:支持自动粘贴并筛选手机号码,让信息处理更轻松

在信息时代的浪潮中,文本处理已成为我们日常工作与生活的重要组成部分。无论是商务沟通、社交互动还是个人事务处理,手机号码的筛选与粘贴都显得尤为关键。然而,传统的文本处理方式效率低下、易出错,已无法满足现代人的高效需求。…...

Linux云计算之网络基础9——园区网络架构项目

要求构建大型园区网络架构,方案如下: 园区A 园区c 公司B 要求: 1、A公司园区网络 一台汇聚层三层交换机,两台接入层二层交换机。 出口有一台路由器。 2、A园区有五台服务器。 分别为两台 WEB 服务器,…...

Java 中的 List 集合

文章目录 添加元素获取元素检查元素删除元素修改元素获取列表大小检查列表是否为空清空列表查找元素索引获取列表的子列表 List 是 Java 集合框架中的一个接口,它表示一个有序的集合(序列),允许存储重复的元素。List 接口提供了许…...

数据库之DDL操作(数据库,表,字段)

Data Definition Language,数据库定义语言,用来定义数据库对象(数据库,表,字段) 1.数据库操作 1.1查询所有数据库 show databases; 1.2查询当前数据库 show databases(); 1.3创建数据库 create da…...

5.3.1 配置交换机 SSH 管理和端口安全

5.3.1 实验1:配置交换机基本安全和 SSH管理 1、实验目的 通过本实验可以掌握: 交换机基本安全配置。SSH 的工作原理和 SSH服务端和客户端的配置。 2、实验拓扑 交换机基本安全和 SSH管理实验拓扑如图所示。 交换机基本安全和 SSH管理实验拓扑 3、实验步骤 &a…...

Django--数据库连接

数据库配置 打开mysite/settings.py配置文件,这是整个Django项目的设置中心。Django默认使用SQLite3数据库,因为Python原生支持SQLite3数据库,所以你无须安装任何程序,就可以直接使用它。 下面是默认的数据库配置: …...

CKA 基础操作教程(二)

Kubernetes Deployment 理论学习 Kubernetes Deployment (部署)是一种 Kubernetes 资源对象,用于定义和管理容器化应用程序的部署和更新。Deployment 提供了一种声明性的方式来定义应用程序的期望状态,并负责确保所需数量的 Pod…...

【SQLServer】快速查看SQL Server中所有数据库中所有表的行数

1.查看某个数据库中每个表的行数 SELECT @@servername as servername, db_name() as databasename, s.name AS schemaname, t.name AS tablename,p.rows AS rowcounts,SUM(a...

Node.js------Express

◆ 能够使用 express.static( ) 快速托管静态资源◆ 能够使用 express 路由精简项目结构◆ 能够使用常见的 express 中间件◆ 能够使用 express 创建API接口◆ 能够在 express 中启用cors跨域资源共享 一.初识Express 1.Express 简介 官方给出的概念:Express 是基…...

CSS - 你实现过0.5px的线吗

难度级别:中级及以上 提问概率:75% 我们知道在网页显示或是网页打印中,像素已经是最小单位了,但在很多时候,即便是最小的1像素,精度却不足以呈现所需的线条精度和细节。因此,为了在网页显示和网页打印中呈现更加细致的线条,为了在视觉…...

hbuilderX创建的uniapp项目转移到vscode

场景:一直使用hbuilderX开发的朋友想转移到vscode获取更好的TypeScript支持,所以想把整个项目目录拖到vscode进行开发,但发现运行不了,提示没有package.json等,并且不能执行pnpm命令 首先,我们先来看一下h…...

JavaScript 事件流

JavaScript与HTML之间的交互是通过事件实现的,而用户与浏览器页面的互动也是通过事件来实现的事件就是文档或浏览器窗口中发生的一些特定的交互瞬间,所以分为两种事件,一是发生在 浏览器对象(BOM)上的事件,…...

HTML——5.表单、框架、颜色

一、表单 HTML 表单用于在网页中收集用户输入的数据&#xff0c;例如登录信息、搜索查询等。HTML 提供了一系列的表单元素&#xff0c;允许用户输入文本、选择选项、提交数据等。 <!DOCTYPE html> <html lang"en"> <head> <meta charset&q…...

Docker、Kubernetes之间的区别

比较容器化工具&#xff1a;了解 Docker、Kubernetes 在应用程序部署和管理方面的差异。 基本概述 Docker 是一个流行的容器化平台&#xff0c;允许开发人员在容器中创建、部署和运行应用程序。 Docker 提供了一组工具和 API&#xff0c;使开发人员能够构建和管理容器化应用程…...

【21-40】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了

【21-40】计算机网络基础知识&#xff08;非常详细&#xff09;从零基础入门到精通&#xff0c;看完这一篇就够了 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用21、HTTPS是如何保证数据传输的安全&#xff0c;整体的流程是什么&#xff1f;&#xff08;SSL是…...

软考111-上午题-【计算机网络】-URL和DNS

一、URL解析 org&#xff1a;各类组织结构&#xff08;非盈利团队&#xff09; 1-1、顶级域 顶级域名是域名的最后一个部分&#xff0c;即是域名最后一点之后的字母&#xff0c;例如&#xff1a;www.baidu.com这个域名中&#xff0c;顶级域是.com&#xff08;或.COM&#xff…...

EasyCVR视频汇聚平台海康Ehome2.0与5.0设备接入时的配置区别

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

Vue3 PC端 UI组件库我更推荐Naive UI

一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用&#xff0c;前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率&#xff0c;还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库&#xff08;Naive UI、Element …...