01.SparkSQL概述

01.SparkSQL概述

01.SparkSQL概述一、简介spark SQL是spark的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象就是DataFrame。 和基本的Spark RDD API不同的是Spark SQL提供了更多关于数据结构和正在执行的计算的信息。 在内部,Spark SQL使用这些额外的信息来执行额外的优化。可以使用SQL或者Dataset API与Spark SQL进行交互。二、发展历程1.0以前Shark,SparkSQL的前身是Shark。但是,随着Spark的发展,Shark对于Hive的太多依赖 (如采用Hive的语法解析器、查询优化器等等),制约了Spark的...

大数据 2021-07-16 PM 28℃ 0条
10.【转载】Spark RDD持久化

10.【转载】Spark RDD持久化

10.【转载】Spark RDD持久化一、什么是持久化?持久化的意思就是说将RDD的数据缓存到内存中或者持久化到磁盘上,只需要缓存一次,后面对这个RDD做任何计算或者操作,可以直接从缓存中或者磁盘上获得,可以大大加快后续RDD的计算速度。二、为什么要持久化?在之前的文章中讲到Spark中有tranformation和action两类算子,tranformation算子具有lazy特性,只有action算子才会触发job的开始,从而去执行action算子之前定义的tranformation算子,从hdfs中读取数据等,计算完成之后,Spark会将内存中的数据清除,这样处理的好处是避免了OO...

大数据 2021-06-29 AM 72℃ 0条
09.【转载】Spark RDD任务划分

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

09.【转载】Spark RDD任务划分一、DAG有向无环图生成1.1 DAG是什么DAG(Directed Acyclic Graph) 叫做有向无环图(有方向,无闭环,代表着数据的流向),原始的RDD通过一系列的转换就形成了DAG。下图是基于单词统计逻辑得到的DAG有向无环图二、DAG划分stage2.1 stage是什么一个Job会被拆分为多组Task,每组任务被称为一个stagestage表示不同的调度阶段,一个spark job会对应产生很多个stagestage类型一共有2种:ShuffleMapStage最后一个shuffle之前的所有变换的Stage叫ShuffleMap...

大数据 2021-06-29 AM 54℃ 0条
08.Spark RDD依赖关系

08.Spark RDD依赖关系

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

大数据 2021-06-29 AM 49℃ 0条
07.Spark RDD序列化

07.Spark RDD序列化

07.Spark RDD序列化一、闭包检查​ 从计算的角度, 算子以外的代码都是在 Driver 端执行, 算子里面的代码都是在 Executor 端执行。​ 那么在 scala 的函数式编程中,就会导致算子内经常会用到算子外的数据,这样就形成了闭包的效果,如果使用的算子外的数据无法序列化,就意味着无法传值给 Executor 端执行,就会发生错误,所以需要在执行任务计算前,检测闭包内的对象是否可以进行序列化,这个操作我们称之为闭包检测。Scala2.12 版本后闭包编译方式发生了改变。二、序列化方法和属性从计算的角度, 算子以外的代码都是在 Driver 端...

大数据 2021-06-29 AM 66℃ 0条
06.【转载】Spark RDD行动算子

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 mapRdd.collect()collect()等行动算子在底层调用环境对象的runJob方法,会创建ActiveJob,并提交执行。如果只有转换算子,而没有行动算子,那么Job不会执行,只是功能上的封...

大数据 2021-06-29 AM 66℃ 0条
05.【转载】Spark RDD转换算子

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(1, 2, 3, 4)) // 值的转换 ==> List(2, 4, 6, 8) val mapRDD: RDD[Int] = rdd.map( _ * 2 ) mapRDD.collect...

大数据 2021-06-29 AM 70℃ 0条
04.Spark RDD创建简介

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: ClassTag[T]): RDD[T]参数1:Seq集合,必须。参数2:分区数,默认为该Application分配到的资源的CPU核数//默认分区数创建RDD val rdd1 = sparkC...

大数据 2021-06-29 AM 53℃ 0条
03.Spark RDD简介

03.Spark RDD简介

03.Spark RDD简介一、RDD定义RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。弹性存储的弹性:内存与磁盘的自动切换;容错的弹性:数据丢失可以自动恢复;计算的弹性:计算出错重试机制;分片的弹性:可根据需要重新分片分布式:数据存储在大数据集群不同节点上数据集:RDD封装了计算逻辑,并不保存数据数据抽象:RDD是一个抽象类,需要子类具体实现不可变:RDD封装了计算逻辑,是不可以改变的,想要改变,只能产生新的RDD,在新的RD...

大数据 2021-06-29 AM 45℃ 0条
02. Spark Shuffle过程介绍

02. Spark Shuffle过程介绍

02. Spark Shuffle过程介绍一、Shuffle概念1.1 Shuffle简介有些运算需要将各节点上的同一类数据汇集到某一节点进行计算,把这些分布在不同节点的数据按照一定的规则汇集到一起的过程称为 Shuffle。1.2 MapReduce中的Shuffle在MapReduce框架,Shuffle是连接Map和Reduce之间的桥梁,Map阶段通过shuffle读取数据并输出到对应的Reduce;而Reduce阶段负责从Map端拉取数据并进行计算。在整个shuffle过程中,往往伴随着大量的磁盘和网络I/O。所以shuffle性能的高低也直接决定了整个程序的性能高低。详细过程...

大数据 2021-06-29 AM 52℃ 0条