
Spark
文章平均质量分 92
OneTenTwo76
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【SparkStreaming + Spark Core】案例实操需求二和需求三、Spark内核概述和部署模式再回顾
Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制、Spark任务调度机制、Spark内存管理机制、Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够更好地完成Spark代码设计,并能够帮助准确锁定项目运行过程中出现的问题的症结所在。上图为Spark通用运行流程图,体现了基本的Spark应用程序在部署中的基本提交流程。任务提交后,都会先启动Driver程序;随后Driver向集群管理器注册应用程序;原创 2022-09-25 12:00:00 · 1307 阅读 · 0 评论 -
【SparkStreaming】DS输出、优雅的关闭、案例实操之需求一的实现
与RDD中的惰性求值类似,如果一个DStream及其派生出的DStream都没有被执行输出操作,那么这些DStream就都不会被求值。接下来开始实时需求的分析,需要用到SparkStreaming来做实时数据的处理,在生产环境中,绝大部分时候都是对接的Kafka数据源,创建一个SparkStreaming读取Kafka数据的工具类。使用代码的方式持续的生成数据,然后写入到kafka中,然后从kafka消费数据,并对数据根据需求进行分析。1)读取Kafka数据之后,并对MySQL中存储的黑名单数据做校验;原创 2022-09-22 12:45:00 · 421 阅读 · 0 评论 -
【SparkStreaming】DStream创建和转换(无状态操作,有状态操作)
专门的Executor读取数据,速度不统一跨机器传输数据,WALExecutor读取数据通过多个线程的方式,想要增加并行度,则需要多个流unionoffset存储在Zookeeper中Executor读取数据并计算增加Executor个数来增加消费的并行度offset存储 a) CheckPoint(getActiveOrCreate方式创建StreamingContext) b) 手动维护(有事务的存储系统)原创 2022-09-21 12:00:00 · 788 阅读 · 0 评论 -
【SparkStreaming】概述、DS入门、DS创建
数据处理的延迟离线计算在计算开始前已知所有输入数据,输入数据不会产生变化,一般计算量级较大,计算时间也较长。例如今天早上一点,把昨天累积的日志,计算出所需结果。最经典的就是Hadoop的MapReduce方式;实时计算输入数据是可以以序列化的方式一个一个地输入并进行处理,也就是说在开始的时候并不需要知道所有的输入数据。与离线计算相比,运行时间短,计算量级相对较小。强调计算过程的时间要短,即所查当下给出结果。需要继承Receiver,并实现onStart、onStop方法来自定义数据源采集。原创 2022-09-20 13:30:00 · 748 阅读 · 0 评论 -
【SparkSQL】数据的加载和保存、项目实战
这里的热门商品是从点击量的维度来看的,计算各个区域前三大热门商品,并备注上每个商品在主要城市中的分布比例,超过两个城市用其他显示。地区商品名称点击次数城市备注华北商品A100000北京21.2%,天津13.2%,其他65.6%华北商品P80200北京63.0%,太原10%,其他27.0%华北商品M40000北京63.0%,太原10%,其他27.0%东北商品J92000大连28%,辽宁17.0%,其他 55.0%原创 2022-09-09 15:00:00 · 823 阅读 · 0 评论 -
SparkSQL【核心编程、使用IDEA开发、用户自定义函数】
用户可以通过spark.udf功能添加自定义函数,实现自定义功能减少Shuffle,提高效率,模仿LongAccumulator累加器。原创 2022-09-04 08:00:00 · 433 阅读 · 0 评论 -
SparkSQL【概述,DataFrame核心编程】
Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块。原创 2022-09-03 08:00:00 · 512 阅读 · 0 评论 -
Spark Core【Spark内存管理机制】
作为一个JVM 进程,Executor 的内存管理建立在JVM的内存管理之上,Spark对 JVM的堆内(On-heap)空间进行了更为详细的分配,以充分利用内存。同时,Spark引入了堆外(Off-heap)内存,使之可以直接在工作节点的系统内存中开辟空间,进一步优化了内存的使用。堆内内存受到JVM统一管理,堆外内存是直接向操作系统进行内存的申请和释放堆内内存的大小,由Spark应用程序启动时的 –executor-memory 或 spark.executor.memory 参数配置。Executor原创 2022-09-02 08:00:00 · 255 阅读 · 0 评论 -
Spark Core【Spark的任务调度机制、shuffle过程解析】
当Driver起来后,Driver则会根据用户程序逻辑准备任务,并根据Executor资源情况逐步分发任务。在详细阐述任务调度前,首先说明Spark里的几个概念。Job是以Action方法为界,遇到一个Action方法则触发一个Job;Stage是Job的子集,以RDD宽依赖(即Shuffle)为界,遇到Shuffle做一次划分;Task是Stage的子集,以并行度(分区数)来衡量,分区数是多少,则有多少个task。...原创 2022-09-01 08:00:00 · 305 阅读 · 0 评论 -
Spark Core【Spark的内核概述、部署模式、通讯架构】
Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制、Spark任务调度机制、Spark内存管理机制、Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够帮助我们更好地完成Spark代码设计,并能够帮助我们准确锁定项目运行过程中出现的问题的症结所在。上图为Spark通用运行流程图,体现了基本的Spark应用程序在部署中的基本提交流程。任务提交后,都会先启动Driver程序;随后Driver向集群管理器注册应用程序;...原创 2022-08-31 08:00:00 · 401 阅读 · 0 评论 -
Spark基础【两个小案例、Yarn模式下任务执行源码】
比如:计算 3-5 的单跳转化率,先获取符合条件的 Session 对于页面 3 的访问次数(PV)为 A,然后获取符合条件的 Session 中访问了页面 3 又紧接着访问了页面 5 的次数为 B,那么 B/A 就是 3-5 的页面单跳转化率。计算页面单跳转化率,什么是页面单跳转换率,比如一个用户在一次 Session 过程中访问的页面路径 3,5,7,9,10,21,那么页面 3 跳到页面 5 叫一次单跳,7-9 也叫一次单跳,那么单跳转化率就是要统计页面点击的概率。Session:会话(通信状态)原创 2022-08-30 08:00:00 · 353 阅读 · 0 评论 -
Spark基础【完善案例一、框架式开发模式再回顾】
因为join可能存在笛卡尔乘积,而join底层实现就是corgroup,所以corgroup可能存在笛卡尔乘积,源码如下。问题二:corgroup可能存在存在shuffle【性能瓶颈】,源码如下。以上程序中存在四次reduceByKey,意味着存在四次shuffle。将需求一更改为框架式开发模式,以便将需求一的结果传给其他应用使用。问题一:在过滤数据时同一个RDD重复使用,造成数据的重复读取。修改需求一中第五步,代码如下。自定义累加器实现需求一。解决问题一:添加代码。原创 2022-08-24 08:00:00 · 285 阅读 · 0 评论 -
Spark基础【RDD累加器、广播变量、一个小案例】
使用累加器实现wordcount// 构建一个对象 val acc = new LongAccumulator}根据源码来看,自定义累加器的流程继承AccumulatorV2类定义泛型IN :输入数据的类型 StringOUT 输出数据的类型 Map[K, V]重写方法,6个(3【与计算相关】 + 3【与状态相关】)isZero:判断累加器是否为初始状态copy: 复制累加器reset: 重置累加器,原来的map中有数据,现在需要将其清空add: 从外部向累加器中添加数据。...原创 2022-08-20 08:00:00 · 545 阅读 · 0 评论 -
Spark基础【RDD持久化、分区器、文件保存读取】
自定义分区器继承Partitioner重写方法(2 + 2)numPartitions:准备分几个区getPartition:根据数据的K返回所在的分区编号,从0开始如果有两个连续的相同分区操作,会发生什么第二个partitionBy会不会有shuffle操作// key的类型是数组类型,且分区器是Hash,抛异常 if(keyClass . isArray && partitioner . isInstanceOf [ HashPartitioner ]) {...原创 2022-08-18 00:00:00 · 490 阅读 · 0 评论 -
Spark基础【RDD依赖关系--源码解析】
主要为shuffle设计,如果存在shuffle,需要一个完整的阶段(resultStage)一分为二,前一个阶段(shuffleMapStage)用于写数据和进行数据的落盘,前一个阶段执行完成才可以进行下一个阶段,resultStage包含shuffleMapStage。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。相邻两个RDD之间的关系,称之为依赖关系,多个连续的依赖关系称之为血缘关系。...原创 2022-08-17 00:00:00 · 312 阅读 · 0 评论 -
Spark基础【RDD行动算子、序列化】
那么在scala的函数式编程中,就会导致算子内经常会用到算子外的数据,这样就形成了闭包的效果,如果使用的算子外的数据无法序列化,就意味着无法传值给Executor端执行,就会发生错误,所以需要在执行任务计算前,检测闭包内的对象是否可以进行序列化,这个操作称之为闭包检测。Java的序列化能够序列化任何的类。样例类专用于模式匹配声明的类,但是其不仅可以在模式匹配中使用,也可以当做普通类来使用,而且更加强大,因为在生成类的同时,自动添加了很多功能,其中一项就是默认实现了可序列化接口,反编译后代码。...原创 2022-08-13 00:00:00 · 432 阅读 · 0 评论 -
Spark基础【RDD KV类型转换算子】
从shuffle的角度:reduceByKey和groupByKey都存在shuffle的操作,但是reduceByKey可以在shuffle前对分区内相同key的数据进行预聚合(combine)功能,这样会减少落盘的数据量,而groupByKey只是进行分组,不存在数据量减少的问题,reduceByKey性能比较高。那么还是只能使用groupByKey。在类型为(K,V)和(K,W)的RDD上调用,返回一个相同key对应的所有元素连接在一起的(K,(V,W))的RDD,不相同不连接。......原创 2022-08-11 18:42:59 · 3196 阅读 · 0 评论 -
Spark基础【RDD转换算子】
在数据量非常大的情况下,有时为了分析造成数据倾斜的原因,需要从原数据中抽取出一部分进行分析,或者当需要将10000个存储在数据库中的对象存储到内存中,不确定内存是否足够,也可以抽取一部分对象,查看占用内存大小,从而推算出10000个对象所占的内存。针对第二种情况,三个分区需要申请三个资源去处理,前两个资源执行的快,因为分区三没执行完,所以前两个资源也不可以释放,造成资源浪费,为了解决这种情况,可以进行缩减分区,将一二两个分区的数据一起处理,申请一个资源。排序后新产生的RDD的分区数与原RDD的分区数一致。.原创 2022-08-10 18:29:21 · 840 阅读 · 0 评论 -
Spark基础【RDD单Value类型转换算子】
一个分区的数据被打乱,和其他分区的数据组合在一起,这个操作称为shuffle,现在想进行两分区数据相加,但第一个RDD中有很多分区,分区内有很多数据,shuffle如何做计算呢,在内存中是否等待所有数据到来之后再进行运算,即使等待,内存不够怎么办?第二类是执行逻辑,将封装好的逻辑进行执行,让整个作业运行起来,称之为行动算子。java克隆浅复制存在引用问题,mapPartitions处理完的数据不会释放,那么引用也不会被释放,当全部处理完成时,才会释放,意味着数据越多,持续时间越长,占用内存空间越大。....原创 2022-08-09 19:05:38 · 1064 阅读 · 0 评论 -
Spark基础【RDD分区和并行度】
答:当有多个Executor多个Task时,为防止热点,过载问题,通过分区指示数据走哪个分区,可以将分区理解为管道,数据理解为水,水在管道中流,流过之后水并不会留在管道中。可分区:让数据能够并行计算,采用分区的概念,与kafka中的分区略有不同,kafka的分区可以保存数据,而RDD的分区不保存数据。saveAsTextFile方法可以生成分区文件,将数据按照分区的形式保存为文件,有几个分区就会保存几份文件。如果构建RDD时,没有指定数据处理分区的数量,就会使用默认分区的数量。...原创 2022-08-07 19:37:31 · 1411 阅读 · 0 评论 -
Spark基础【运行架构、RDD】
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。RDD计算模型更适合并行计算和重复使用。实现并行计算条件:在内部将数据分开(分区),将各个分区的数据发送给多个节点(Executor)进行计算实现重复使用条件:计算单一,功能简单,从java角度理解就是能抽取出通用方法。...原创 2022-08-06 19:27:59 · 694 阅读 · 0 评论 -
Spark基础【五种运行模式】
这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。在自己学习时,每次都需要启动虚拟机,启动集群,这是一个比较繁琐的过程,并且会占大量的系统资源,导致系统执行变慢,不仅仅影响学习效果,也影响学习进度,Spark非常暖心地提供了可以在windows系统下启动本地集群的方式,这样,在不使用虚拟机的情况下,也能学习Spark的基本使用。所谓的Local模式,就是不需要其他任何节点资源就可以在本地执行Spark代码的环境,一般用于教学,调试,演示等,之前在IDEA中运行代码的环境称之为开发环境,不太一样。..原创 2022-08-05 18:56:05 · 4331 阅读 · 0 评论 -
Spark基础【介绍、入门WordCount案例】
HadoopSparkHadoopSpark由上面的信息可以获知,Spark出现的时间相对较晚,并且主要功能主要是用于数据计算,所以其实Spark一直被认为是Hadoop框架的升级版,但其实不是NameNode是单点的,容易出现单点故障,制约了集群的发展NameNode是单点的,受到了硬件的制约,制约了集群的发展MapReduce运行速度太慢,主要因为设计理念的问题,MR早期就是用于单一数据计算,在当前数据挖掘和数据迭代计算情景中不适用MR框架和Hadoop耦合性非常强,无法分离增加了一个资源调度框架,将计原创 2022-08-04 20:31:30 · 1829 阅读 · 0 评论