版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章Spark离线数据分析学习目标了解Spark编程语法掌握基本Spark数据分析程序编写的方法132知识思政技能Spark算子的使用吃苦耐劳科学探索精神技术前提Spark运行环境Spark编程快速上手1、创建项目框架,打开IntelliJIDEA,创建Maven工程2、添加相关依赖<dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.0.0</version></dependency>Spark编程快速上手3、添加Scala支持,点击File->ProjectStructure->ProjectSettings->Libraries,点击右上角的”+”,选择ScalaSDK4、将scala-sdk-2.12.10添加到模块中,点击File->ProjectStructure->ProjectSettings->Modules,点击右上角的”+”,选择ScalaSDK,在弹出来的对话框中的”Uselibrary”的下拉列表中选择scala-sdk-2.12.10,点击Create按钮,并点击OKSpark编程快速上手5、在src->main->java文件夹下点击右键,选择New->ScalaClass,在弹出窗口中选择Object,输入名称为:WordCount6、输入相应代码objectWordCount{defmain(args:Array[String]):Unit={valsparConf=newSparkConf().setMaster("local").setAppName("WordCount")valsc=newSparkContext(sparConf)sc.stop()}}Spark常用算子-Map算子5、Map算子是一种转换操作,用于对RDD(ResilientDistributedDatasets)中的每个元素应用一个指定的函数。这个函数将被独立地应用于RDD中的每个元素,生成一个新的RDD,其中包含了经过该函数处理后的结果。Map属于Spark中的转换算子,可以是值的转换也可以是类型的转换。函数签名defmap[U:ClassTag](f:T=>U):RDD[U]函数说明将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换。具体应用valdataRDD:RDD[Int]=sparkContext.makeRDD(List(1,2,3,4))valdataRDD1:RDD[Int]=dataRDD.map(num=>{num*2})Spark常用算子-FlapMap算子5、将处理的数据进行扁平化后再进行映射处理,所以算子也称之为扁平映射函数签名defflatMap[U:ClassTag](f:T=>TraversableOnce[U]):RDD[U]函数说明将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换。具体应用valdataRDD=sparkContext.makeRDD(List(List(1,2),List(3,4)),1)valdataRDD1=dataRDD.flatMap(list=>list)Spark常用算子-groupByKey算子5、groupByKey顾名思义是“按照Key做分组”,但实际上groupByKey算子包含分组和收集两步。groupByKey的功能就是对Key值相同的元素做分组,然后把相应的Value值,以集合的形式收集到一起。换句话说,groupByKey会把RDD的类型,由RDD[(Key,Value)]转换为RDD[(Key,Value集合)]。函数签名函数签名defgroupByKey():RDD[(K,Iterable[V])]函数说明将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换。具体应用valdataRDD1=sparkContext.makeRDD(List(("a",1),("b",2),("c",3)))valdataRDD2=dataRDD1.groupByKey()Spark常用算子-mapvalues算子5、在ApacheSpark中,如果只想对键值对RDD的value部分进行处理,而不是同时对key和value进行处理。对于这种情形,Spark提供了mapValues(func),它的功能是,对键值对RDD中的每个value都应用一个函数,但是,key不会发生变化。函数签名defmapValues[U](f:V=>U):RDD[(K,U)函数说明在ApacheSpark中,mapValues是一个用于对键值对RDD进行转换的算子。它对RDD中每个键值对的值应用一个指定的函数,而键保持不变。具体应用valdata=List(("apple",3),("orange",2),("banana",5))valpairRDD=sc.parallelize(data)valdoubledValuesRDD=pairRDD.mapValues(value=>value*2)Spark常用算子-filter算子5filter,顾名思义,这个算子的作用,是对RDD进行过滤。就像是map算子依赖其映射函数一样,filter算子也需要借助一个判定函数f,才能实现对RDD的过滤转换。函数签名defreduceByKey(func:(V,V)=>V):RDD[(K,V)]函数说明可以将数据按照相同的Key对Value进行聚合。具体应用valdataRDD1=sparkContext.makeRDD(List(("a",1),("b",2),("c",3)))valdataRDD2=dataRDD1.reduceByKey(_+_)valdataRDD3=dataRDD1.reduceByKey(_+_,2)Spark与Hadoop区别Hadoop的MR框架和Spark框架都是数据处理框架。HadoopMapReduce由于其设计初衷并不是为了满足循环迭代式数据流处理,因此在多并行运行的数据可复用场景(如:机器学习、图挖掘算法、交互式数据挖掘算法)中存在诸多计算效率等问题。Spark就是在传统的MapReduce计算框架的基础上,对其计算过程进行优化,从而大大加快了数据分析、挖掘的运行和读写速度,并将计算单元缩小到更适合并行计算和重复使用的RDD计算模型。Spark和Hadoop的根本差异是多个作业之间的数据通信问题:Spark多个作业之间数据通信是基于内存,而Hadoop是基于磁盘。Spark核心模块Spark框架主要有SparkCore、SparkSQL、SparkStreaming、SparkMllib和SparkGraphX组成。Spark运行架构Spark框架的核心是一个计算引擎,整体来说,它采用了标准master-slave的结构。图形中的Driver表示master,负责管理整个集群中的作业任务调度。图形中的Executor则是slave,负责实际执行任务。Spark安装部署Spark作为一个数据处理框架和计算引擎,主要有要本地运行模式(Local模式)、独立运行模式(Standalone模式)和YARN,在国内工作中主流的环境为Yarn。接下来,我们就分别看看不同环境下Spark的安装与部署。Spark本地模式(Local)安装安装步骤:(1)将spark-3.0.3-bin-hadoop3.2.tgz文件上传到Linux并解压缩,放置在指定位置,路径中不要包含空格。具体命令:tar-zxvfspark-3.0.0-bin-hadoop3.2.tgz-C/opt/module(2)修改spark-3.0.3-bin-hadoop3.2名称为spark-local,具体命令:
mvspark-3.0.3-bin-hadoop3.2spark-local启动SparkLocal环境启动步骤:(1)进入安装目录后的路径,执行如下指令:
bin/spark-shell(2)启动成功后,可以输入网址进行WebUI监控页面访问http://虚拟机地址:4040bin/spark-submit\--classorg.apache.spark.examples.SparkPi\--masterlocal[2]\./examples/jars/spark-examples_2.12-3.0.3.jar\101)--class表示要执行程序的主类,此处可以更换为咱们自己写的应用程序2)--masterlocal[2]部署模式,默认为本地模式,数字表示分配的虚拟CPU核数量3)spark-examples_2.12-3.0.0.jar运行的应用类所在的jar包,实际使用时,可以设定为咱们自己打的jar包4)数字10表示程序的入口参数,用于设定当前应用的任务数量启动SparkLocal提交应用Spark独立运行模式(Standalone)安装本地模式(Local)只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,Standalone模式使用Spark自身节点运行的集群模式,体现了经典的master-slave模式。安装之前要进行集群规划:HostNameHadoop01Hadoop02Hadoop03SparkWorkerMasterWorkerWorker安装步骤:(1)将spark-3.0.3-bin-hadoop3.2.tgz文件上传到Linux并解压缩,放置在指定位置,路径中不要包含空格,修改文件名为spark-standalone。(2)进入解压缩后路径的conf目录,修改slaves.template文件名为slaves,添加work节点,具体命令:mvslaves.templateslavesvi
slaves
在文件添加如下内容:Hadoop01Hadoop02hadoop03Spark独立运行模式(Standalone)安装安装步骤:(3)修改spark-env.sh.template文件名为spark-env.sh,具体命令:
mvspark-env.sh.templatespark-env.sh(4)修改spark-env.sh文件,添加JAVA_HOME环境变量和集群对应的master节点,并指定master的端口号,具体命令:vi
spark-env.sh
添加如下内容:exportJAVA_HOME=/export/servers/jdkSPARK_MASTER_HOST=hadoop01SPARK_MASTER_PORT=7077Spark独立运行模式(Standalone)安装安装步骤:(5)分发spark-standalone目录scp-r/opt/module/spark-standalonehadoop02://opt/modulescp-r/opt/module/spark-standalonehadoop03://opt/moduleSpark独立运行模式(Standalone)安装启动集群(1)在Hadoop01中进行安装目录,如输入如下命令:sbin/start-all.sh(2)查看三台服务器运行进程Spark独立运行模式(Standalone)安装启动集群(3)查看Master资源监控WebUI界面:http://hadoop01:8080Spark独立运行模式(Standalone)安装提交应用bin/spark-submit\--classorg.apache.spark.examples.SparkPi\--masterspark://hadoop01:7077\./examples/jars/spark-examples_2.12-3.0.3.jar\101)--class表示要执行程序的主类2)--masterspark://linux1:7077独立部署模式,连接到Spark集群3)spark-examples_2.12-3.0.3.jar4)数字10表示程序的入口参数,用于设定当前应用的任务数量Spark独立运行模式(Standalone)安装在任务执行时查看每台计算机,Java进进程执行任务时,默认采用服务器集群节点的总核数,每个节点内存1024M。Spark独立运行模式(Standalone)安装SparkYarn模式安装独立部署(Standalone)模式由Spark自身提供计算资源,无需其他框架提供资源。这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但要注意的是,Spark主要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,利用其他专业的资源调度框架集成会更靠谱。Yarn就是专业的资源高度框架,用他管理Spark计算资源,数据处理效率会有很大的提高。安装步骤:(1)将spark-3.0.3-bin-hadoop3.2.tgz文件上传到Linux并解压缩,放置在指定位置,路径中不要包含空格,修改文件名为spark-yarn。(2)由于Hadoop运行环境中,默认会启用一个线程检查每个任务正使用的物理内存量和虚拟内存,当超出分配值,则会关闭,会影响到Spark资源的调度。SparkYarn模式安装<property><name>yarn.nodemanager.pmem-check-en
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流配送员工作质量绩效考评表
- 行动提高自我保护能力拒绝校园暴力小学主题班会课件
- 摩根士丹利-美国投资者访问-20260720
- 关于企业品牌宣传合作的商谈及推进通知函4篇
- 培养良好学习习惯提高综合素质的小学主题班会课件
- 移动支付业务绩效评定表
- 安全知识行:守护童年的每一步小学主题班会课件
- 电商营销活动全流程管理方案
- 仓储物流部货物运输异常情况说明回复函3篇范文
- 财务分析师数据分析能力绩效衡量表
- 2026年行政执法证考试必考题库及完整参考答案(官方大纲版)
- 中国血脂管理指南(基层版2026临床适用版)完整解读
- HF生产装置的腐蚀机理及安全防护技术探讨
- (2026年)二十大应知应会试题库及答案
- 2026年大唐集团热能与动力工程岗招聘笔试考点
- 室内薄壁不锈钢给排水管道施工工艺
- 医院物价管理规范及流程
- 新疆大学普通本、专科生转专业实施细则(试行)
- GB/T 10810.1-2025眼镜镜片第1部分:单焦和多焦
- 银行网点标准化服务培训课件
- (完整版)CJJ-1-2008-城镇道路工程施工与质量验收规范
评论
0/150
提交评论