spark学习
文章平均质量分 68
大大大大肉包
一个喜欢计算机的帅小伙
展开
-
八股文系列Spark
两者并没有大的差别。都是将 mapper(Spark 里是 ShuffleMapTask)的输出进行 partition,不同的 partition 送到不同的 reducer(Spark 里 reducer 可能是下一个 stage 里的 ShuffleMapTask,也可能是 ResultTask)。Reducer 以内存作缓冲区,边 shuffle 边 aggregate 数据,等到数据 aggregate 好以后进行 reduce(Spark 里可能是后续的一系列操作)。原创 2024-06-11 16:56:00 · 1260 阅读 · 1 评论 -
用spark实现row_number()
用spark实现row_number()原创 2022-11-16 19:12:53 · 1166 阅读 · 0 评论 -
Spark中的DataFrame和DataSet
在SparkSql中要求被操作的数据必须是结构化的,所以引入了俩种数据类型,DataFrame和DataSet。DataFrame是spark1.3之后引入的分布式集合,DataSet是spark1.6之后引入的分布式集合。在spark2.0之后,DataFrame和DataSet的API统一了,DataFrame是DataSet的子集,DataSet是DataFrame的扩展。(type DataFrame = org.apache.spark.sql.Dataset[org.apache.spark原创 2022-05-05 19:13:43 · 2347 阅读 · 0 评论 -
Spark中广播变量和累加器
1、广播变量广播变量的定义:广播变量可以让程序高效地向所有工作节点发送一个较大的只读值,以供一个或多个spark操作使用,在机器学习中非常有用。广播变量是类型为spark.broadcast.Broadcast[T]的一个对象,其中存放着类型为T的值。它由运行SparkContext的驱动程序创建后发送给会参与计算的节点,非驱动程序所在节点(即工作节点)访问改变量的方法是调用该变量的value方法,这个值只会被发送到各节点一次,作为只读值处理。广播变量的使用场景:如果我们要在分布式计算里面分原创 2022-05-03 21:05:57 · 1565 阅读 · 0 评论 -
Spark执行流程详解
1、在命令行执行提交命令时,在spark-submit脚本中,调用了SparkSubmit类中的mainMethod.invoke方法,这个类通过反射,调用我们自定义的类。2、我们自定义类中的main方法开始执行,初始化了SparkConf和SparkContext,在SparkContext对象被初始化的时候,构造出来DAGScheduler和TaskScheduler。3、Driver端会对我们的代码进行解析,根据算子记录rdd之间的依赖关系,生成DAG有向无环图。当程序触发action..原创 2022-04-29 16:44:02 · 4592 阅读 · 0 评论 -
Spark中RDD的缓冲和持久化
1、缓冲缓冲的作用:可以在内存中持久化或缓存多个数据集。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,如果对这个RDD进行重复使用的时候,就不需要重复计算了,可以直接从缓冲中取。缓冲的使用: //persist() 会对当前RDD进行持久化,可以使用参数来设置缓冲的方式,如在内存中、磁盘中、内存加磁盘 pairRdd.persist(pairRdd.persist(StorageLevel.MEMORY_AND_DISK)) //cache() 其原创 2022-04-29 16:05:51 · 452 阅读 · 0 评论 -
Spark中RDD的依赖和DAG的生成
1、RDD之间的依赖类型窄依赖(NorrawDependency)父RDD的一个分区的数据,是给到子rdd的一个分区使用,这种依赖关系就是窄依赖。窄依赖指的是父RDD的一个分区,被子RDD的一个分区所依赖(一对一)。map,flatMap,filter 都是窄依赖,union 也是窄依赖。分为宽依赖(WideDependency)父RDD的一个分区的数据,是给到子rdd的多个分区使用,那么就是宽依赖。一旦有宽依赖,在这里会发生数据的shuffle,会切分stage(阶段)。sor原创 2022-04-28 19:00:16 · 1429 阅读 · 0 评论 -
Spark中RDD的算子
1、算子的简单介绍Transformation(转换)算子:根据数据集创建一个新的数据集,计算后返回一个新RDD,例如一个rdd进行map操作后生了一个新的rdd。Action(动作)算子:对rdd结果计算后返回一个数值value给驱动程序(driver),例如collect算子将数据集的所有元素收集完成返回给驱动程序。控制算子:对数据集进行特殊操作,例如cache算子将对于重复使用的算子,进行cache做缓存使用,数据只保存在内存中,性能提升。懒执行:Spark中转化算子和控制算子是懒执行原创 2022-04-28 18:06:39 · 1415 阅读 · 0 评论 -
spark中RDD的分区
1、分区的介绍分区partition,RDD内部的数据集合在逻辑上和物理上被划分成多个小子集合,这样的每一个子集合我们将其称为分区,即是数据集的一个逻辑块。RDD只是数据集的抽象,分区内部并不会存储具体的数据。Partition 类内包含一个 index 成员,表示该分区在 RDD 内的编号,通过 RDD 编号 + 分区编号可以唯一确定该分区对应的块编号,利用底层数据存储层提供的接口,就能从存储介质(如:HDFS、Memory)中提取出分区对应的数据。2、分区的意义RDD 是一种分布式的原创 2022-04-28 10:33:21 · 4097 阅读 · 0 评论 -
Spark的RDD介绍
1、什么是RDDRDD(Resilient Distributed Dataset)叫做弹性的分布式数据集合,是Spark中最基本的数据抽象,它代表一个不可变、只读的,被分区的数据集。弹性的体现:RDD可以通过lineage(血统)进行恢复、数据持久化(内存、磁盘、序列化)。分布式的体现:RDD是被分区的。不同的分区在不同的worker上。对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD ,不同的分片、原创 2022-04-27 16:35:35 · 2396 阅读 · 0 评论