热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

个子_Spark常见问题整理面试前必看

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spark常见问题整理--面试前必看相关的知识,希望对你有一定的参考价值。一、job、stage、Task之间

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spark常见问题整理--面试前必看相关的知识,希望对你有一定的参考价值。



一、job、stage、Task之间的关系是什么?


  • 一个job可以包含多个stage

  • 一个stage包含多个task


二、job、stage、Task之间的关系是什么?


  • 每提交一个任务,就会创建一个job,即调用action算子的时候会创建job【当调用算子之后返回值不是RDD类型的就可以归为Action算子】
  • 根据宽依赖和窄依赖划分stage,如果是宽依赖,就新增一个stage
  • Task数量实际上就是分区的数量

三、什么是宽依赖、窄依赖?


  • 如果一个父RDD分区被多个子RDD的分区使用,就是宽依赖【超生】如果一个父RDD分区被多个子RDD的分区使用,就是宽依赖【超生】
  • 如果一个父RDD分区只被一个子RDD分区使用,就是窄依赖【独生】如果一个父RDD分区只被一个子RDD分区使用,就是窄依赖【独生】
  • abstract class Dependencyabstract class Dependency
    • abstract class NarrowDependency extend Dependency 有一个抽象方法,getParents()
      • class OneToOneDependency extend NarrowDependency 实现抽象方法getParents()
      • class RangeDependency extend NarrowDependency 实现抽象方法getParents()class RangeDependency extend NarrowDependency 实现抽象方法getParents()
    • class ShuffleDependency extend Dependencyclass ShuffleDependency extend Dependency

四、Action算子和Transformation算子是什么,列举一些?


  • Action算子会创建job,会立即执行。 例如:take ,first,collect,foreach,foreachPartition。

  • Transformation不会立即执行,但是里边会记录一些依赖关系,还有函数。 例如:map,filter,flatMap,reduceByKey,groupByKey等等。


五、reduceByKey和groupByKey有什么区别?

reduceByKey:reduceByKey 会在结果发送至reducer 之前会对每个mapper 在本
地进行merge,有点类似于在MapReduce 中的combiner。这样做的好处在于,
在map 端进行一次reduce 之后,数据量会大幅度减小,从而减小传输,保证reduce
端能够更快的进行结果计算。

groupByKey:groupByKey 会对每一个RDD 中的value 值进行聚合形成一个序列
(Iterator),此操作发生在reduce 端,所以势必会将所有的数据通过网络进行传输,
造成不必要的浪费。同时如果数据量十分大,可能还会造成OutOfMemoryError。

结论:

所以在进行大量数据的reduce 操作时候建议使用reduceByKey。不仅可以提高速
度,还可以防止使用groupByKey 造成的内存溢出问题。


六、RDD五大属性


七、Spark的架构与作业提交流程


推荐阅读
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Explain如何助力SQL语句的优化及其分析方法
    本文介绍了Explain如何助力SQL语句的优化以及分析方法。Explain是一个数据库SQL语句的模拟器,通过对SQL语句的模拟返回一个性能分析表,从而帮助工程师了解程序运行缓慢的原因。文章还介绍了Explain运行方法以及如何分析Explain表格中各个字段的含义。MySQL 5.5开始支持Explain功能,但仅限于select语句,而MySQL 5.7逐渐支持对update、delete和insert语句的模拟和分析。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
author-avatar
KeNnyT0nGMM_934
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有