![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spark 3.1.3
文章平均质量分 70
新手小农
这个作者很懒,什么都没留下…
展开
-
Spark -- 资源申请和任务调度
5、Executor 进程启动后会向 AM(Driver)反向注册,Executor 全部注册完成后,开始执行执行 Job 任务 AM中的 SparkContext 分配 Task 给 Executor 执行,Executor 运行 Task 并向AM(Driver)汇报运行状态、进度、以及最终结果;1、指的是如果当前的Task的运行速度缓慢,此时TaskSchedule就会在比较空闲的Executor上启动一个相同的Task来执行这个任务,当两个Task谁先结束,先出来的结果就作为最终的计算结果。原创 2023-10-25 09:59:10 · 164 阅读 · 1 评论 -
Spark 调优
对多次使用的RDD使用Cache进行缓存,默认的情况下使用的是MEMORY_ONLY这种模式,但是使用这种模式的前提是内存必须是充足的,因为数据都是存储在内存中,就不需要进行序列化和反序列化的操作,所以就避免一些性能的开销,也不需要再去磁盘中读取数据文件,性能更高,但是在实际的生产过程中,会使用MEMORY_AND_DISK_SER策略,数据会首先存在内存中,当内存中不够会将溢出的数据进行一个压缩存储到磁盘中。因为需要进行网络传输,所以需要进行序列化,Spark默认使用的是官方的序列化的方式效率比较低。原创 2023-10-24 21:49:12 · 44 阅读 · 0 评论 -
Spark Core -- BlockManager && 累加器 && 数据本地化级别
3、同时在Executor端,BlockManager内部的 MemoryStore负责的是对内存上的数据进行读写和存储, DisStore负责对磁盘的数据进行存储和读写,BlockManagerWorker负责对其他的BlockManager的数据进行读写。在Spark中,算子内部想要使用的外部定义的变量,使用的是该外部变量的副本,是无法对外部变量进行修改。Task所计算的数据在不同的机架的不同节点的磁盘或者Executor进程的内存中。Task所计算的数据在本节点其他Executor进程的内存中。原创 2023-10-24 22:57:53 · 52 阅读 · 0 评论 -
Spark Streaming
作用和foreachRDD的作用基本一致,都是将每一个批次转换成RDD来处理,但是二者的区别就在于Transform是有返回值的,所以可以理解为Transform是一个转换算子,然而froeachRDD是没有返回值的。1、如果在算子外部建立连接,当数据库中的数据发生变化,对于查询数据,丢失的数据依旧会被查询到,因为在算子外部,只会建立一次连接。2、如果建立在算子内部,就会导致查询一次就会建立一次连接,会导致效率较低。3、所以综上所述选择每一个批次时建立一次连接。原创 2023-10-23 11:23:05 · 53 阅读 · 0 评论 -
Spark Core -- 广播变量
4、此时就可以将外部变量广播给每一个Exceutor,因为每一个Task都是在Exceutor上执行的,所以每一个Task会去对应的Exceutor上获取外部变量。3、因为Task的数量一定会比Exceutor的数量要多,此时Driver端就会将每一个外部变量广播给每一个Task。2、但是如果算子内部中需要使用到算子外部的变量,此时就会将外部的变量也封装到Task中,然后再发送到Executor中。1、在每一次运行Spark的任务的时候,算子内部的代码最终会被封装到Task中并发送到Executor中。原创 2023-10-19 18:58:06 · 49 阅读 · 1 评论 -
Spark Core -- CheckPoint && Cache && Lineage血统
Spark中解决节点失效、数据丢失等问题时采用的一种机制或方案 为了保证RDD 中数据的鲁棒性,RDD数据集通过所谓的血统关系(Lineage)记住了它是如何从其它RDD中演变过来的。因为Spark中对每一个RDD执行的算子操作的时候,都需要从数据源头计算一遍,就会导致RDD被重复计算,浪费资源,消耗时间,影响整体的性能。2、对于内存放不下:可以使用MEMORY_AND_DISK_SER,因为该模式可以对数据进行序列化,对数据具有一定的压缩的作用。RDD的Lineage记录的是粗粒度的。原创 2023-10-18 15:51:06 · 62 阅读 · 1 评论 -
Spark SQL
1、集成:SQL与Spark无缝连接,支持多种语言,可以将RDD转化成DF,使复杂的SQL查询变得简单化。SparkSession:是Spark2.0引入的新概念,为用户提供统一的入口,可以让用户使用Spark的各项功能。2、当不同的数据被加载进来的时候,Spark SQL就是将数据映射成DataFrame,进而被DF API进行处理。2、统一的数据访问:提供了统一的接口DF,可以加载和查询不同的数据源的数据。5、支持各种常见的数据源,比如scv、josn、orc、jdbc...原创 2023-10-16 21:10:55 · 116 阅读 · 1 评论 -
Spark中常见的错误以及修改方案
配置一下就可以解决。文件位置随便设置,这里是在D:\soft\hadoop3\bin,注意在配置路径时,bin目录不需要添加。配置完成后重启idea。原创 2023-10-11 15:25:58 · 267 阅读 · 1 评论 -
Spark Core----Spark常用算子
3、groupBy分组结束以后,组中的数据都是都是分组前的每一条完整的数据,对于groupKeyBy来说,分组结束后得到的数据是由kv形式的RDD中的value组成。Transformation算子(转换算子):由一个RDD转化成另一个RDD,转换算子(懒执行)并不会自己执行,需要行为算子进行触发执行。2、groupBy在进行分组的时候需要指定分组的条件,但是groupKeyBy在分组的时候不需要指定分组条件,会自动根据key继续分组。保存数据,将RDD保存到存储系统。处理数据,RDD之间的转化。原创 2023-10-11 15:18:42 · 174 阅读 · 2 评论 -
Spark提交代码到集群中运行
2、注意输入和输出的路径必须是HDFS存在的某个路径。3、使用maven将代码打成jar包并上传。原创 2023-10-10 20:31:39 · 269 阅读 · 1 评论 -
Spark基础(3.1.3)
1、Spark是一个开源的分布式计算系统,是致力于快速的分析数据2、总结来说就是专门为大规模数据处理而设计的快速通用的计算引擎3、Spark可以完成各种运算,例如SQL查询,文本分析,机器学习等。4、Spark是由Scala语言开发的,与Scala紧密结合。原创 2023-10-11 19:59:55 · 97 阅读 · 1 评论 -
Spark-RDD的五大特性
假设数据是存储在node1上的Datanode,然而Task任务是在Executor上启动的,然而 Exector是在Container(假设时yarn的模式)上启动,然而是由yarn中的NodeManager分配的资 源,假设此时的NodeManager是node2上,此时运行就需要将数据传输到node2上,但是RDD来说,就会将Task任务分配到node1上,速度会比较前一种较快,这就是移动任务不移动数据。第一个RDD的分区的个数是由文件的切片的个数所决定的。1、RDD是由一系列的分区组成。原创 2023-10-10 19:58:19 · 381 阅读 · 0 评论