高级特性_闭包_Spark 闭包分发 | 学习笔记

简介: 快速学习 高级特性_闭包_Spark 闭包分发

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段高级特性_闭包_Spark 闭包分发】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/12030


高级特性_闭包_Spark 闭包分发


内容简介

一、闭包分发

二、要点

 

这节我们继续了解 spark 中的闭包,为什么要说闭包的概念,很重要的概念,通过本节的学习就能去规避经常会出现的 bug,理解 dirver 是怎样分发任务的。

 

一、闭包分发

1.sc.textfile(“dataset/access_log_sample.text)  //通过 textfile 读取文件

.flatmap(item => item.split(“”))   // flatmap 进行文件处理 括号内函数每个分区就代表一个 task,函数所代表的 task 会被分发到不同的 executor 中,task 会被分发到不同的节点去执行。

image.png

2.item => item.split(“”)函数是闭包,闭包只有在封闭了外部作用域的时候,函数才被称为闭包

.collect() // collect 收集

Class Myclass

Val field = hello

Def dostuffrddRDDstring]):RDD[string] = {

Rdd.map(x => field + x)// 函数

}

3.Dostuff 方法中,RDD 进行了 map

(x => field + x)函数中,引用了 myclass 对象中的一个成员变量,说明其可以访问 myclass 这个类的作用域,也是一个闭包,封闭的是 myclass 这个作用域

这个函数可以访问 myclass 的作用域,说明闭包是一个封闭的 myclass 的作用域。

image.png

将闭包实例分发到不同 executor 中执行的时候,其依赖类 myclass 这个类当前的对象,因为其封闭了这个作用域。Myclass 和函数都要一起被序列化,分发到不同的节点执行。

问题:如果 myclass 不能被序列化,将会报错

问题:如果在这个闭包中,依赖类一个外部很大的集合,那么这个集合会随着一个 task 分发。可以理解为,其依赖的外部的数据,都会被复制很多份。


二、要点

1.一个函数如果在另一个函数中定义,那么这个函数中依赖了外部的一个变量,那么这个函数就要去持有外部类的对象(作用域),这样我们称函数为闭包

2. spark 数据中,算子所传入的函数中,包含了外部的变量,变量和类会随着 task 一起被序列化,分发到不同的 executor 中执行,外部依赖有多少 task,就会被复制多少份。

相关文章
|
3月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
28 0
|
分布式计算 大数据 Spark
Spark 原理_总体介绍_物理执行图 | 学习笔记
快速学习 Spark 原理_总体介绍_物理执行图
102 0
Spark 原理_总体介绍_物理执行图 | 学习笔记
|
分布式计算 大数据 数据处理
Spark 原理_总体介绍_逻辑执行图 | 学习笔记
快速学习 Spark 原理_总体介绍_逻辑执行图
114 0
Spark 原理_总体介绍_逻辑执行图 | 学习笔记
|
分布式计算 大数据 调度
Spark 原理_总体介绍_集群环境 | 学习笔记
快速学习 Spark 原理_总体介绍_集群环境
Spark 原理_总体介绍_集群环境 | 学习笔记
|
分布式计算 大数据 Spark
Spark 原理_总体介绍_概要 | 学习笔记
快速学习 Spark 原理_总体介绍_概要
Spark 原理_总体介绍_概要 | 学习笔记
|
分布式计算 Hadoop 大数据
Spark 原理_总结介绍_案例编写 | 学习笔记
快速学习 Spark 原理_总结介绍_案例编写
104 0
Spark 原理_总结介绍_案例编写 | 学习笔记
|
分布式计算 大数据 调度
Spark 原理_运行过程_总结和流程 | 学习笔记
快速学习 Spark 原理_运行过程_总结和流程
104 0
Spark 原理_运行过程_总结和流程 | 学习笔记
|
缓存 分布式计算 Hadoop
Spark 原理_运行过程_概念介绍 | 学习笔记
快速学习 Spark 原理_运行过程_概念介绍
116 0
Spark 原理_运行过程_概念介绍 | 学习笔记
|
存储 分布式计算 大数据
Spark 原理_运行过程_stage 和 task 的关系 | 学习笔记
快速学习 Spark 原理_运行过程_stage 和 task 的关系
192 0
Spark 原理_运行过程_stage 和 task 的关系 | 学习笔记
|
2月前
|
机器学习/深度学习 分布式计算 算法
Spark快速大数据分析PDF下载读书分享推荐
《Spark快速大数据分析》适合初学者,聚焦Spark实用技巧,同时深入核心概念。作者团队来自Databricks,书中详述Spark 3.0新特性,结合机器学习展示大数据分析。Spark是大数据分析的首选工具,本书助你驾驭这一利器。[PDF下载链接][1]。 ![Spark Book Cover][2] [1]: https://zhangfeidezhu.com/?p=345 [2]: https://i-blog.csdnimg.cn/direct/6b851489ad1944548602766ea9d62136.png#pic_center
110 1
Spark快速大数据分析PDF下载读书分享推荐