Spark-Scala语言实战(6)

在之前的文章中,我们学习了如何在scala中定义与使用类和对象,并做了几道例题。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

Spark-Scala语言实战(5)-CSDN博客文章浏览阅读1.6k次,点赞51次,收藏18次。今天我会给大家带来如何在Scala中定义类和对象,并正确使用它们同时也会给大家讲解一些实训题例。希望在本篇文章中,大家有所收获。也欢迎朋友们到评论区下一起交流学习,共同进步。https://blog.csdn.net/qq_49513817/article/details/136954217?spm=1001.2014.3001.5501今天的文章,我会教大家如何在IDEA中导入我们spark的jars包,并使用RDD方法查看是否导入成功,并完成一道相关例题。

目录

一、知识回顾

二、导入jars包

1.配置

2.方法

三、任务实现

拓展-RDD    

1.什么是rdd

2.RDD的特点

3.RDD框架


一、知识回顾

 在我们的Scala中,有着我们的类(Class)和对象(Object),而我们的类定义了对象的属性和方,而对象是类的实例。

我们可以使用new关键字来创建类的对象。

其次就是构造器

 Scala的类可以有一个或多个构造器,它们用于初始化对象的属性,使用this关键字。

最后就是伴生对象

 在Scala中,每个类都有一个与之关联的伴生对象。这个对象与类共享相同的名称,并且它的定义位于类定义的外部。

现在,开始今天的学习吧

二、导入jars包

 首先,进入File中的project structure

进入Libraries 添加java

选择本地spark文件中的jars即可。

现在,写一个简单的RDD看下我们的jars包是否导入成功

在代码中有几行是我们要注意的 

1.配置

import org.apache.spark.{SparkConf, SparkContext}

 这一行的作用是配置spark应用程序,初始化spark的运行环境。

2.方法

 val conf=new SparkConf().setMaster("local").setAppName("123456")val sc=new SparkContext(conf)

 这两行的作用是使用 .setMaster("local") 方法指定了 Spark 应用程序的运行模式。通过 .setAppName("123456") 方法,为 我的Spark 应用程序设置了一个名称。

现在完整代码附上:

import org.apache.spark.{SparkConf, SparkContext}
object p3 {def main(args: Array[String]): Unit = {val conf=new SparkConf().setMaster("local").setAppName("123456")val sc=new SparkContext(conf)val data = Array(1,2,3,4,5)val distData = sc.parallelize(data)print(distData.partitions.size)}
}

运行结果 ,输出了1

三、任务实现

查询上半年实际薪资排名前3的员工信息,需要对上半年的实际薪资进行排序,而创建RDD时,textFile0方法是将每一行数据作为一条记录存储的,所以在排序前需要先对数据进行转换,实现步骤如下。(任务文档以文章附件提供)
(1)读取CSV文件,将第一行字段名称删除。
(2)将数据按分隔符“”分隔,取出第2列员工姓名和第7列实际薪员工信息 资数据,并将实际薪资数据转换成Int类型数据。
(3)通过sortBy()方法根据实际薪资进行降序排列。
(4)通过take()方法获取上半年实际薪资排名前3的员工信息。

import org.apache.spark.{SparkConf, SparkContext}object p2 {def main(args: Array[String]): Unit = {val conf=new SparkConf().setMaster("local").setAppName("p2")val sc=new SparkContext(conf)val first_half = sc.textFile("C:\\Employee_salary_first_half.csv")val drop_first = first_half.mapPartitionsWithIndex((ix,it) => {if (ix ==0) it.drop(1)it})val split_first = drop_first.map(line => {val data = line.split(","); (data(1),data(6).toInt)})val sort_first =split_first.sortBy(x => x._2,false)val ppp=sort_first.take(3)println(ppp.toList)}
}

使用了 sc.textFile 方法读取位于 "C:\\Employee_salary_first_half.csv" 的 CSV 文件,并将它作为一个 RDD返回。

使用了 mapPartitionsWithIndex 方法去除首行数据,因为首行数据是我们用不到的标题等,

使用了sortBy 方法,按照元组的第二个元素(即第七列的值)进行降序排序。

最后将数据转化为列表输出。

执行代码获得最后结果。

拓展-RDD    

1.什么是rdd

RDD,全称Resilient Distributed Dataset,即弹性分布式数据集,是分布式内存的一个抽象概念。它是Spark中最基本的数据抽象,代表一个不可变、可分区、里面的元素可并行计算的集合。RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建。

RDD的主要特性包括:

  1. 分区列表:每个RDD被分为多个分区,这些分区运行在集群的不同节点上,每个分区都会被一个计算任务处理,分区数决定并行计算的数量。
  2. 依赖关系:RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系,包括窄依赖(一对一)和宽依赖(多对多)。
  3. 容错性:RDD支持高效的容错,数据既可以缓存在内存中,也可以缓存在磁盘中,或者缓存在外部存储中。

RDD的作用是降低了开发分布式应用程序的门槛,提高了执行效率。在RDD中,开发者可以通过简单的操作如map、reduce等完成数据的拆分、通信机制、作业调度等复杂任务。

2.RDD的特点

特点描述
弹性RDD是弹性的,可以在内存中缓存数据,并支持容错性。当计算节点发生故障时,可以重新计算丢失的数据分区,而不需要重新启动整个计算过程。
分区RDD将数据集合划分为多个分区,每个分区存储在不同的计算节点上。这样可以实现数据的并行处理,提高计算效率。
不可变性RDD是不可变的,即不能直接修改RDD中的数据。如果需要对RDD进行转换或操作,会生成一个新的RDD。
延迟计算RDD采用了惰性计算的策略,即只有在需要获取结果时才会进行计算。这样可以避免不必要的计算,提高计算效率。
容错性RDD具有容错性,可以自动从节点失败中恢复过来。如果某个节点上的RDD分区因为节点故障导致数据丢失,RDD会自动通过自己的数据来源重新计算该分区。

3.RDD框架

组件描述
Spark框架一个用于大规模数据处理的快速、通用计算引擎,支持批处理、流处理、图计算和机器学习等。
RDD(弹性分布式数据集)Spark的核心抽象,表示一个只读、可分区的数据集,可以跨集群节点进行计算。
分区(Partition)RDD中的数据被逻辑上划分为多个分区,每个分区存储在不同的节点上,以实现并行计算。
转换操作(Transformations)创建新RDD的操作,如map、filter、flatMap等。这些操作是惰性的,只记录计算逻辑,不立即执行。
动作操作(Actions)触发RDD计算并返回结果到驱动程序的操作,如collect、count、reduce等。
依赖关系(Dependencies)RDD之间的依赖关系,用于描述RDD之间的转换链,支持容错和计算优化。
缓存(Caching)RDD可以缓存在内存中,以便在多次计算中重用,提高计算效率。
容错性(Fault Tolerance)RDD通过记录数据转换的血缘关系实现容错,当节点故障导致数据丢失时,可以重新计算丢失的分区。
调度器(Scheduler)负责任务的调度和分配,将任务发送到合适的节点上执行,以实现高效的并行计算。
执行器(Executor)运行在集群节点上的进程,负责执行具体的计算任务,与驱动程序通信以获取数据和指令。

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

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

相关文章

HCIA-Datacom H12-811 题库补充(3/28)

完整题库及答案解析,请直接扫描上方二维码,持续更新中 OSPFv3使用哪个区域号标识骨干区域? A:0 B:3 C:1 D:2 答案:A 解析:AREA 号0就是骨干区域。 STP下游设备通知上游…

eplan部件清单的生成及自建部件库简介

生成报表页面: 右下图是报表页面,如果图纸有改动,点左图更新 举例,下图有急停按钮符号,要把急停按钮显示在清单里.第一步,已经有了符号(下左图急停),符号有设备标识符.第二步就是简易自建部件,第三部是在符号属性里关联自建部件 上图是右键点击同类型的部件,然后新建.下图新建部…

进阶了解C++(6)——二叉树OJ题

Leetcode.606.根据二叉树创建字符串: 606. 根据二叉树创建字符串 - 力扣(LeetCode) 难度不大,根据题目的描述,首先对二叉树进行一次前序遍历,即: class Solution { public:string tree2str(Tr…

jmeter总结之:Regular Expression Extractor元件

Regular Expression Extractor是一个后处理器元件,使用正则从服务器的响应中提取数据,并将这些数据保存到JMeter变量中,以便在后续的请求或断言中使用。在处理动态数据或验证响应中的特定信息时很有用。 添加Regular Expression Extractor元…

Capture One Pro 22 for Mac/win:重塑RAW图像处理的艺术

在数字摄影的世界里,RAW图像处理软件无疑是摄影师们手中的魔法棒,而Capture One Pro 22无疑是这一领域的璀璨明星。这款专为Mac和Windows系统打造的图像处理软件,以其出色的性能、丰富的功能和极致的用户体验,赢得了全球摄影师的广…

数据库原理与应用(SQL Server)笔记 关系数据库

目录 一、关系数据库的基本概念(一)关系数据库的定义(二)基本表、视图(三)元组、属性、域(四)候选码、主码、外码 二、关系模型三、关系的完整性(一)实体完整…

010——服务器开发环境搭建及开发方法(下)

目录 三、 第一个驱动程序 四、 buildroot 4.1 制作根文件系统 4.2 buildroot使用 五、 uboot 009——服务器开发环境搭建及开发方法(上)-CSDN博客 三、 第一个驱动程序 # 1. 使用不同的开发板内核时, 一定要修改KERN_DIR # 2. KERN_DIR中的内核要…

百度智能云推出AI大模型全家桶;抖音发布 AI 生成虚拟人物治理公告

百度智能云推出大模型全家桶 百度智能云昨日在北京首钢园召开「Al Cloud Day: 大模型应用产品发布会」,此次发布会上,百度智能云宣布对以下 7 款产品进行升级。 数字人平台百度智能云曦灵智能客服平台百度智能云客悦内容创作平台「一念」知识智平台「甄…

【计算机网络】第 11、12 问:流量控制和可靠传输机制有哪些?

目录 正文流量控制的基本方法停止-等待流量控制基本原理滑动窗口流量控制基本原理 可靠传输机制1. 停止-等待协议2. 后退 N 帧协议(GBN)3. 选择重传协议(SR) 正文 流量控制涉及对链路上的帧的发送速率的控制,以使接收…

HTTP

HTTP 概念:HyperTextTransferProtocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则 HTTP协议特点: 1.基于TCP协议:面向连接,安全 2.基于请求-响应模型的:一次请求对应一次响应 …

区块链dapp开发 dapp系统开发方案

在区块链技术的兴起和普及的推动下,去中心化应用程序(DApp)成为了当前数字世界中的热门话题之一。DApp 的开发不仅需要考虑技术方面的挑战,还需要深入了解区块链的工作原理和应用场景。本文将介绍一种 DApp 系统开发的基本方案&am…

CSS实现小车旅行动画实现

小车旅行动画实现 效果展示 CSS 知识点 灵活使用 background 属性下的 repeating-linear-gradient 实现路面效果灵活运用 animation 属性与 transform 实现小车和其他元素的动画效果 动画场景分析 从效果图可以看出需要实现此动画的话,需要position属性控制元素…

旧电脑安装个Win11玩玩,看看体验如何!

前言 小伙伴们都很清楚,Windows11的配置要求其实并不是很高,但要求的受信任平台模块(TPM)版本要求2.0 由于受信任平台模块的限制,导致许多电脑都没办法安装Windows11,如果要安装Windows11的旧机器也只能绕…

【QT+QGIS跨平台编译】040:【geos_c+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、geos_c介绍二、文件下载三、文件分析四、pro文件五、编译实践一、geos_c介绍 GEOS_C(GEOS C++接口)是GEOS库的C语言版本,它提供了一套丰富的API,允许开发者在C++程序中执行复杂的几何形状处理和空间关系分析。GEOS_C是基于JTS(Java Topolog…

步态采集平台

🍉步骤一、读取视频每一帧图像 🍉步骤二、对读取的图像进行分割,得到全景下的步态轮廓图。 ​​​​​​​🍉步骤三、对读取的图像进行裁剪得到归一化的步态轮廓图。 ​​​​​​​🍉步骤四、保存这一帧步态轮廓图

新网站收录时间是多久,新建网站多久被百度收录

对于新建的网站而言,被搜索引擎收录是非常重要的一步,它标志着网站的正式上线和对外开放。然而,新网站被搜索引擎收录需要一定的时间,而且时间长短受多种因素影响。本文将探讨新网站收录需要多长时间,以及新建网站多久…

SnapGene 5 for Mac 分子生物学软件

SnapGene 5 for Mac是一款专为Mac操作系统设计的分子生物学软件,以其强大的功能和用户友好的界面,为科研人员提供了高效、便捷的基因克隆和分子实验设计体验。 软件下载:SnapGene 5 for Mac v5.3.1中文激活版 这款软件支持DNA构建和克隆设计&…

网络:udptcp套接字

目录 协议 网络传输基本流程 网络编程套接字 udp套接字编程 udp相关代码实现 sock函数 bind函数 recvfrom函数 sendto函数 udp执行指令代码 popen函数 udp多线程版收发消息 tcp套接字编程 tcp套接字代码 listen函数 accept函数 read/write函数 connect函数 recv/…

UE RPC 外网联机(2)

外网联机配置测试 一、网络配置 开放外网端口开放端口是为了可以进行外网访问;端口包含一个预案管理服务器端口和多个预案服务器端口;(预案管理服务器类似于大厅,预案服务器类似于房间,大厅管理多个房间;) (1)预案管理服务器端口;(如:23001) (2)预案服务器端口…

C++优先队列——priority_queue,函数对象,labmda表达式,pair等

头文件&#xff1a;#include<queue> 内部使用堆来实现&#xff0c;在需要或得最大的几个值或最小的几个值而不关心整个数组的顺序时非常好用。 用法&#xff1a; priority_queue<int, vector<int>, greater<int>>q; 第一个参数为堆中存储的元素。 …