高级特性_闭包_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,就会被复制多少份。

相关文章
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
160 0
|
分布式计算 大数据 Spark
Spark 原理_总体介绍_物理执行图 | 学习笔记
快速学习 Spark 原理_总体介绍_物理执行图
205 0
Spark 原理_总体介绍_物理执行图 | 学习笔记
|
分布式计算 大数据 数据处理
Spark 原理_总体介绍_逻辑执行图 | 学习笔记
快速学习 Spark 原理_总体介绍_逻辑执行图
204 0
Spark 原理_总体介绍_逻辑执行图 | 学习笔记
|
分布式计算 大数据 调度
Spark 原理_总体介绍_集群环境 | 学习笔记
快速学习 Spark 原理_总体介绍_集群环境
140 0
Spark 原理_总体介绍_集群环境 | 学习笔记
|
分布式计算 大数据 Spark
Spark 原理_总体介绍_概要 | 学习笔记
快速学习 Spark 原理_总体介绍_概要
145 0
Spark 原理_总体介绍_概要 | 学习笔记
|
分布式计算 Hadoop 大数据
Spark 原理_总结介绍_案例编写 | 学习笔记
快速学习 Spark 原理_总结介绍_案例编写
203 0
Spark 原理_总结介绍_案例编写 | 学习笔记
|
分布式计算 大数据 调度
Spark 原理_运行过程_总结和流程 | 学习笔记
快速学习 Spark 原理_运行过程_总结和流程
183 0
Spark 原理_运行过程_总结和流程 | 学习笔记
|
缓存 分布式计算 Hadoop
Spark 原理_运行过程_概念介绍 | 学习笔记
快速学习 Spark 原理_运行过程_概念介绍
211 0
Spark 原理_运行过程_概念介绍 | 学习笔记
|
存储 分布式计算 大数据
Spark 原理_运行过程_stage 和 task 的关系 | 学习笔记
快速学习 Spark 原理_运行过程_stage 和 task 的关系
348 0
Spark 原理_运行过程_stage 和 task 的关系 | 学习笔记
|
6月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
364 0