![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
文章平均质量分 56
liguanghai12
这个作者很懒,什么都没留下…
展开
-
spark 3.0 部分学习笔记一
1.spark 和mapreduce 最大的区别就是:spark 基于内存,任务之间通信快mapreduce 基于磁盘,io交互读取慢,任务之间的通信慢1.Spark安装分为:Local(本地模式),Standalon(Spark独立集群模式),Yarn模式2.Standalon模式 和 Yarn模式区别:Standalon有自己独立的Master 和 Worker节点作为资源管理Yarn模式使用Yarn中的ResourceManager 和 NodeManager进行资源管理3.端口号:M原创 2021-03-05 18:09:53 · 197 阅读 · 2 评论 -
SparkStreaming使用之DStream
SparkStreaming使用之DStream文章目录SparkStreaming使用之DStream前言一、SparkStreaming是什么?二、DStream是什么?前言概念:实时数据处理 和 离线数据处理的区别:在于数据处理延迟的长短:实时是毫秒级别,离线数据处理则是小时或者天批量数据处理与流式处理方式的区别:侧重点在于 :数据的处理方式,批量则是一批次处理,流式则是来一个处理一个一、SparkStreaming是什么?SparkStreaming 是Spark 中用于处理实时计原创 2021-02-07 12:49:40 · 250 阅读 · 0 评论 -
SparkSQL之加载与保存数据
SparkSQL之加载与保存数据文章目录前言一、使用步骤1.加载数据2.保存数据3.读取mysql和写入myslq4.Spark连接hive数据库前言sparkSQL可以加载与保存各种类型的数据一、使用步骤1.加载数据spark.read.load 是sparkSQL默认加载数据的方式,默认是加载parquet文件,但是可以通过spark.sql.sources.default 修改spark.read.format("…")[.option("…")].load("…"),通用数据加载原创 2021-02-04 22:08:39 · 800 阅读 · 0 评论 -
Spark SQL之UTF和UTAF
Spark SQL之UTF和UTAF文章目录Spark SQL之UTF和UTAF一、UTF 和 UTAF二、UTF三、 UTAF弱类型强类型一、UTF 和 UTAFUTF:UserDefindFunctionUTAF:UserDefindAggregateFunctionUTF和UTAF都是用户自定义SQL函数二、UTFsparkSession.udf.register("addName",(name:String)=>{ "addName:"+name })s原创 2021-02-03 21:04:34 · 464 阅读 · 0 评论 -
Spark SQL 初入只 DataFrame 和 DataSet
DataFrame 和 DataSet 是Spark SQL两大分布式数据结构,是学习Spark SQL 必不可少的内容Spark SQL的发展Spark SQL前身是Shark,Shark则是使用Hive的结构,把底层计算逻辑换成SparkCore而已,然后需要依赖于Hive的发展,2014年提出,把SparkSQL独立出来 以及提供Hive On SparkSpark 1.0 RDD出现Spark 1.4 DataFrame出现Spark 1.6 DataSet 出现在之后的Spark发展中原创 2021-02-03 09:08:54 · 202 阅读 · 0 评论 -
Spark shuffle(读写过程)
Spark shuffle过程解析,在Spark执行过程中,StageScheduler 负责阶段stage的划分,然后把每一个stage打包成TaskSetManager传给TaskScheduler,但是一个阶段执行完毕后,再传下一个stage,这里需要涉及到上游stage 写数据,下游数据读数据,这里就是shuffle过程,有上游的ShuffleMapStage写数据历史shuffle演变过程1.每个task写一份文件,下游的task从这份文件中查找数据,这样查找时间长2.每个task根据下原创 2021-02-02 13:25:31 · 365 阅读 · 1 评论 -
Spark Task级调度及黑名单和失败重试
Spark 在执行用户app程序时,执行Driver时会存在TaskScheduler 任务调度器属性,这个属性在伴随Driver的执行就会初始化,在StageScheduler 中 submitTask任务时,把任务提交给TaskScheduler中TaskScheduler:Driver中的task任务调度器在Driver执行过程中,DAGScheduler将划分的阶段Stage提交给TaskScheduler 后,TaskScheduler 将Stage 按照最后一个RDD的分区数量来划分成ta原创 2021-02-01 20:28:11 · 802 阅读 · 0 评论 -
Spark用户application执行之阶段划分
Spark在Yarncluster环境运行,在ApplicationMaster在某一个NodeManager上运行后,并所有的Excetor启动后并向Driver注册成功后,Spark开始运行用户程序,Driver 运行后包括了SparkContext准备,DAGScheduler,TaskScheduler等执行,首先就是先执行DAGScheduler任务阶段划分DAGSchedulerDAGScheduler:Spark任务划分阶段Stage管理器,也就是我们称的有向无环图在Driver初始化S原创 2021-02-01 19:58:15 · 169 阅读 · 0 评论 -
Spark内核源码流程之Yarn cluster提交运行流程
当sparksubmit提交模式为Yarn Cluster模式时的启动流程1.通过submit 在本地机器上启动submit 提交job JVM进程2.submit中会判断是否是cluster环境,是,通过反射执行YarnClusterApplication 的main方法2.YarnClusterApplication 会启动yarn ResourceManager client,连接yarn RM3.连接成功后,会发送指令,在指定的NM上启动ApplicationMaster JVM 进程,A原创 2021-01-29 11:34:52 · 377 阅读 · 0 评论 -
关于Scala中的控制抽象,遇到的问题,op : =>Unit 和op : ()=>Unit的区别
问题描述:今天需要写一段Spark中的需求代码,在抽取特质的时候,需要把一段代码传到def 函数中,于是用到了scala中的控制抽象,在使用传参中用到了op : ()=> Unit,出现了不执行的情况具体代码:trait中部分代码:def start(master:String="local[*]")(name:String="application")(op : ()=>Unit): Unit ={ val sparkConf=new SparkConf().setMaster(m原创 2021-01-27 17:18:27 · 620 阅读 · 0 评论 -
页面转化率统计分析及简单实现
文章目录一、需求分析二、代码实现一、需求分析页面转化率?当前页面–>访问下一个页面的次数 / 访问当前页面的总次数思路如下:1.访问是基于页面访问session来统计,每个session都是一次系统访问2.统计需要统计的每个页面访问的总次数(分母)3.分子统计:3.1.按照每个session分组,访问页面时间排序,获取访问页面的顺序列表3.2.使用sliding 或是zip来连起来,获取前一个页面与后一个页面的访问连接3.3.过滤掉非统计的访问页面3.4.聚合所有页面连接访问原创 2021-01-25 22:54:24 · 1078 阅读 · 0 评论 -
需求二:top 10热度中每个品类点击该品类中总次数的top10 session
文章目录一、top 10热度中每个品类点击该品类中总次数的top10 session二、代码实现一、top 10热度中每个品类点击该品类中总次数的top10 session需求分析:在有品类热度前10的基础上,统计每个品类点击次数前10的session和每个session点击该品类的次数。二、代码实现伪代码:1.获取前10品类2.过滤非点击和非前10品类3.每个品类每个session聚合点击次数4.分品类聚合,每个session和其点击次数5.每个品类取前10代码如下(示例):o原创 2021-01-25 16:24:20 · 135 阅读 · 0 评论 -
Spark练习离线计算,从用户日志中统计各个品类热度top10
Spark练习各个品来热度前10文章目录一、需求和资源准备二、实现方式1.最简单实现2.把第一种方案优化3.把第二种方案优化4.使用共享只写变量实现一、需求和资源准备提供的日志格式:2019-07-17_95_26070e87-1ad7-49a3-8fb3-cc741facaddf_37_2019-07-17 00:00:02_手机_-1_-1_null_null_null_null_32019-07-17_95_26070e87-1ad7-49a3-8fb3-cc741facaddf_48_原创 2021-01-25 12:52:56 · 619 阅读 · 0 评论 -
Spark中广播变量(broadcast)使用
文章目录前言一、使用介绍二、broadcast原理前言 在spark中,有一些数据需要传入到每个Excetor中每个task任务中,假如一个Excetor中有10个分区的task,那么每个分区都得需要一份Driver中传入的数据,那么会导致一个Excetor中有大量的重复的数据,spark中存在一种变量broadcast,广播变量,该变量只会往执行任务的执行的Excetor中发送一份变量,这样会大大减少每个EXcetor中的重复的数据一、使用介绍object Broadcast { d原创 2021-01-23 10:56:31 · 3405 阅读 · 0 评论 -
Spark中累加器(Accumulator)使用
累加器用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量,在Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后,传回 Driver 端进行 merge。累加器全称:分布式共享只写变量分布式:由于Excetor是多个,那么累加器也会复制成多份进行计算共享:每个Excetor单独使用自己的accumulator,只写:每个Excetor只能写自己单独的accumulator如果是单独的变量,而不是累原创 2021-01-22 17:25:35 · 1256 阅读 · 0 评论 -
Spark RDD缓存中cache,persist 和checkPoint的区别
Spark RDD缓存中cache,persist 和checkPoint的区别文章目录一、cache,persist和checkPoint是什么?二、不同点1.cache,persist2.checkPoint总结一、cache,persist和checkPoint是什么?cache,persist和checkPoint都是Spark任务执行过程中,缓存RDD产生的数据,避免分区执行发生错误,全部RDD再按照血缘关系再重复执行所有RDD逻辑,而直接从缓存中获取某一段RDD逻辑执行产生的数据二原创 2021-01-22 09:56:41 · 448 阅读 · 0 评论 -
Spark DAG有向无环图任务划分
1.DAG有向无环图DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环。例如,DAG记录了RDD的转换过程和任务的阶段。2)RDD任务切分中间分为:Application、Job、Stage和Task(1)Application:初始化一个SparkContext即生成一个Application;(2)Job:一个Action算子就会生成一个Job;(3)Stage:Stage等于宽依赖的个数加1;(4)Task:一个Stage阶段原创 2021-01-21 17:38:18 · 603 阅读 · 1 评论 -
Spark中的血缘关系与依赖
RDD会把之前的依赖关系记录下来,防止在RDD的某一个阶段执行过程中出现问题后,部分分区数据丢失后,无法恢复数据,这是RDD另一个弹性属性,在数据出现问题,重新恢复数据每一个RDD会把它之前的血缘关系记录下来,可以用 rdd.toDebugString 来获取他所有的血缘关系val fileRDD: RDD[String] = sc.makeRDD(List("scala","Spark","Spark","scala","hello")) println(fileRDD.toDebugStri原创 2021-01-21 10:21:41 · 1397 阅读 · 0 评论