Spark Core案例实操(二)

前言本篇根据Spark Core案例实操(一)中需求继续对代码进行优化,减少shuffle,提高性能。五、实现方案三在方案一和二中,reduceByKey算子使用过多,因为reduceByKey在进行聚合时也会存在shuffle,影响代码的整体性能。5.1 分析在读取数据之后直接转换成如下结构:点击的场合 : ( 品类ID,( 1, 0, 0 ) ) 下单的场合 : ( 品类ID,( 0, ...

大数据 2021-10-30 PM 1440次 0条

Spark Core案例实操(一)

前言本篇将根据电商真实需求,进行案例实操一、数据准备上面的数据图是从数据文件中截取的一部分内容,表示为电商网站的用户行为数据,主要包含用户的 4 种行为:搜索,点击,下单,支付。数据规则如下:数据文件中每行数据采用下划线分隔数据每一行数据表示用户的一次行为,这个行为只能是4 种行为的一种如果搜索关键字为 null,表示数据不是搜索数据如果点击的品类 ID 和产品 ID 为-1,表示数据不是点...

大数据 2021-10-30 PM 1182次 0条

10.【转载】Spark RDD持久化

10.【转载】Spark RDD持久化一、什么是持久化?持久化的意思就是说将RDD的数据缓存到内存中或者持久化到磁盘上,只需要缓存一次,后面对这个RDD做任何计算或者操作,可以直接从缓存中或者磁盘上获得,可以大大加快后续RDD的计算速度。二、为什么要持久化?在之前的文章中讲到Spark中有tranformation和action两类算子,tranformation算子具有lazy特性,只有a...

大数据 2021-06-29 AM 2265次 0条

09.【转载】Spark RDD任务划分

09.【转载】Spark RDD任务划分一、DAG有向无环图生成1.1 DAG是什么DAG(Directed Acyclic Graph) 叫做有向无环图(有方向,无闭环,代表着数据的流向),原始的RDD通过一系列的转换就形成了DAG。下图是基于单词统计逻辑得到的DAG有向无环图二、DAG划分stage2.1 stage是什么一个Job会被拆分为多组Task,每组任务被称为一个stagest...

大数据 2021-06-29 AM 1645次 0条

08.Spark RDD依赖关系

08.Spark RDD依赖关系一、RDD血缘关系1.1 概述RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。由于RDD中是不记录数据的,为了实现分布式计算中的容错 , RDD...

大数据 2021-06-29 AM 1715次 0条

07.Spark RDD序列化

07.Spark RDD序列化一、闭包检查​ 从计算的角度, 算子以外的代码都是在 Driver 端执行, 算子里面的代码都是在 Executor 端执行。​ 那么在 scala 的函数式编程中,就会导致算子内经常会用到算子外的数据,这样就形成了闭包的效果,如果使用的算子外的数据无法序列化,就意味着无法传值给 Executor 端执行,就会发生错误,所以需要在执行...

大数据 2021-06-29 AM 2020次 0条

06.【转载】Spark RDD行动算子

[TOC]行动算子如何理解行动算子?val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4)) // 转换算子:将旧的RDD封装为新的RDD,形成transform chain,不会执行任何Job val mapRdd: RDD[Int] = rdd.map(_ * 2) // 行动算子:其实就是触发作业(Job)执行的方法,返回值不再是RDD ma...

大数据 2021-06-29 AM 1777次 0条

05.【转载】Spark RDD转换算子

[TOC]前言转换算子RDD 根据数据处理方式的不同,将算子整体上分为 Value 类型、双 Value 类型 和 Key-Value类型。Value类型mapdef map(f: T => U): RDD[U]说明:将RDD中类型为T的元素,一对一地映射为类型为U的元素,这里的转换可以是类型的转换,也可以是值的转换val rdd: RDD[Int] = sc.makeRDD(List...

大数据 2021-06-29 AM 2189次 0条

04.Spark RDD创建简介

04.Spark RDD创建简介一、创建RDD1.1 RDD创建方式大概分为四种(1)从集合(内存中创建)RDD从集合中创建 RDD,Spark 主要提供了两个方法:parallelize 和 makeRDDparallelizedef parallelize[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0...

大数据 2021-06-29 AM 1732次 0条

03.Spark RDD简介

03.Spark RDD简介一、RDD定义RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。弹性存储的弹性:内存与磁盘的自动切换;容错的弹性:数据丢失可以自动恢复;计算的弹性:计算出错重试机制;分片的弹性:可根据需要重新分片分布式:数据...

大数据 2021-06-29 AM 1777次 0条