⼤数据⾼频⾯试题 ⼤数据⾼频⾯试题 ⾯试中的问题(重点)** 1. RDD的特性(RDD的解释) 1.RDD可以看做是⼀些列partition所组成的 2.RDD之间的依赖关系 3.算⼦是作⽤在partition之上的 4.分区器是作⽤在kv形式的RDD上 5.partition提供的最佳计算位置,利于数据处理的本地化即计算向数据移动⽽不是移动数据 ps:RDD本⾝是不存储数据,可以看做RDD本⾝是⼀个引⽤数据 RDD弹性 1) ⾃动进⾏内存和磁盘数据存储的切换 Spark优先把数据放到内存中,如果内存放不下,就会放到磁盘⾥⾯,程序进⾏⾃动的存储切换 2) 基于⾎统的⾼效容错机制 在RDD进⾏转换和动作的时候,会形成RDD的Lineage依赖链,当某⼀个RDD失效的时候,可以通过重新计算上游的RDD来重新⽣成丢失 的RDD数据。 3) Task如果失败会⾃动进⾏特定次数的重试 RDD的计算任务如果运⾏失败,会⾃动进⾏任务的重新计算,默认次数是4次。 4) Stage如果失败会⾃动进⾏特定次数的重试 如果Job的某个Stage阶段计算失败,框架也会⾃动进⾏任务的重新计算,默认次数也是4次。 5) Checkpoint和Persist可主动或被动触发 RDD可以通过Persist持久化将RDD缓存到内存或者磁盘,当再次⽤到该RDD时直接读取就⾏。也可以将RDD进⾏检查点,检查点会将数据 存储在HDFS中,该RDD的所有⽗RDD依赖都会被移除。 6) 数据调度弹性 Spark把这个JOB执⾏模型抽象为通⽤的有向⽆环图DAG,可以将多Stage的任务串联或并⾏执⾏,调度引擎⾃动处理Stage的失败以及Task 的失败。 7) 数据分⽚的⾼度弹性 可以根据业务的特征,动态调整数据分⽚的个数,提升整体的应⽤执⾏效率。 2. RDD的两类算⼦ RDD编程API RDD⽀持两种操作:转化操作和⾏动操作。RDD 的转化操作是返回⼀个新的 RDD的操作,⽐如 map()和 filter(),⽽⾏动操作则是向驱动器程 序返回结果或把结果写⼊外部系统的操作。⽐如 count() 和 first()。 Spark采⽤惰性计算模式,RDD只有第⼀次在⼀个⾏动操作中⽤到时,才会真正计算。Spark可以优化整个计算过程。默认情况下,Spark 的 RDD 会在你每次对它们进⾏⾏动操作时重新计算。如果想在多个⾏动操作中重⽤同⼀个 RDD,可以使⽤ RDD.persist() 让 Spark 把这个 RDD 缓存下来。 3.25.17 Transformation算⼦(重要) RDD中的所有转换都是延迟加载的,也就是说,它们并不会直接计算结果。相反的,它们只是记住这些应⽤到基础数据集(例如⼀个⽂件) 上的转换动作。只有当发⽣⼀个要求返回结果给Driver的动作时,这些转换才会真正运⾏。这种设计让Spark更加有效率地运⾏。 转换 含义 map(func) 返回⼀个新的RDD,该RDD由每⼀个输⼊元素经过func函数转换后组成 filter(func) 返回⼀个新的RDD,该RDD由经过func函数计算后返回值为true的输⼊元素组成 flatMap(func) 类似于map,但是每⼀个输⼊元素可以被映射为0或多个输出元素(所以func应该返回⼀个序列,⽽不是单⼀元素) mapPartitions(func) 类似于map,但独⽴地在RDD的每⼀个分⽚上运⾏,因此在类型为T的RDD上运⾏时,func的函数类型必须是Iterator[T] => Iterator[U] mapPartitionsWithIndex(func) 类似于mapPartitions,但func带有⼀个整数参数表⽰分⽚的索引值,因此在类型为T的RDD上运⾏时,func的 函数类型必须是(Int, Iterator[T]) => Iterator[U] sample(withReplacement, fraction, seed) 根据fraction指定的⽐例对数据进⾏采样,可以选择是否使⽤随机数进⾏替换,seed⽤于指定随机 数⽣成器种⼦ union(otherDataset) 对源RDD和参数RDD求并集后返回⼀个新的RDD intersection(otherDataset) 对源RDD和参数RDD求交集后返回⼀个新的RDD distinct([numTasks])) 对源RDD进⾏去重后返回⼀个新的RDD groupByKey([numTasks]) 在⼀个(K,V)的RDD上调⽤,返回⼀个(K, Iterator[V])的RDD reduceByKey(func, [numTasks]) 在⼀个(K,V)的RDD上调⽤,返回⼀个(K,V)的RDD,使⽤指定的reduce函数,将相同 【大数据高频面试题】主要涉及Spark中的核心概念——弹性分布式数据集(RDD),它是Spark的基础数据结构。RDD具有以下特性: 1. **RDD的构成**:RDD是由一系列分区(Partition)组成的,每个分区是一个数据块,分布在集群的不同节点上。 2. **依赖关系**:RDD之间存在依赖关系,这种依赖关系定义了RDD的转换路径,即Lineage。如果一个RDD丢失,可以通过Lineage回溯并重新计算。 3. **操作类型**:RDD支持两种操作——转换(Transformation)和行动(Action)。转换操作不会立即执行,而是记录转换过程;行动操作会触发实际计算,并可能返回结果或写入外部系统。 4. **弹性机制**: - **内存和磁盘的自动切换**:Spark会优先将数据存入内存,当内存不足时,自动将数据移到磁盘。 - **容错机制**:基于Lineage的容错,如果RDD失败,可以通过重算其依赖的父RDD恢复。 - **Task和Stage的重试**:Task失败时会自动重试,最多4次;Stage失败也会重试,同样限制4次。 - **Checkpoint和Persist**:通过Checkpoint持久化RDD到HDFS,消除对父RDD的依赖;使用Persist可以缓存RDD,提高重用效率。 5. **调度弹性**:Spark使用DAG(有向无环图)表示任务执行模型,可以串行或并行执行多Stage任务,自动处理Stage和Task的失败。 6. **数据分片的弹性**:根据业务需求动态调整分区数量,以优化执行效率。 7. **Transformation算子**:这些算子延迟执行,直到需要返回结果时才计算。例如: - `map(func)`:将每个输入元素通过func函数转换为新RDD。 - `filter(func)`:返回一个包含func函数返回值为true的输入元素的新RDD。 - `flatMap(func)`:与map类似,但每个输入元素可以映射为0个或多个输出元素。 - `mapPartitions(func)`:在每个分区上独立运行func,返回新的RDD。 - `mapPartitionsWithIndex(func)`:与mapPartitions类似,但func包含分区索引作为参数。 - `sample(withReplacement, fraction, seed)`:按比例采样数据,可选择是否替换,seed用于设置随机数生成器种子。 - `union(otherDataset)`:合并两个RDD。 - `intersection(otherDataset)`:返回两个RDD的交集。 - `distinct([numTasks])`:去除RDD中的重复元素。 - `groupByKey([numTasks])`:将(K, V)类型的RDD中相同key的元素聚合在一起。 - `reduceByKey(func, [numTasks])`:类似于groupByKey,但使用func函数聚合相同key的值,减少网络传输。 了解这些知识点对于理解和解决大数据处理中的问题至关重要,尤其在面试中,这些概念通常会被问到,因此对于求职者来说非常重要。

























- 粉丝: 205
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于 Python 与 Django 框架,集成 face-recognition、keras、tensorflow 及 opencv 等库的后端项目
- 计算机网络安全与防范喻骏.doc
- 软件开发质量管理层次模型(下).docx
- 《基因工程的基本操作程序》.ppt
- 文科院校大学计算机基础教学改革与实践.docx
- 四层楼电梯的PLC控制设计.doc
- 软考嵌入式系统设计师基础知识复习笔记讲解资料.doc
- 油气田物联网设备在线管理系统研究.doc
- 基于 IMDB 数据集利用 LSTM 和预训练词典向量进行电影评论情感分类分析
- 企业云计算平台虚拟化软件选型方案.doc
- 如何将Photoshop模糊过的图片清晰还原.doc
- c语言课程学生成绩管理.doc
- 《C语言程序设计与数据结构》课件第08章.ppt
- 单片机配电房温湿度测控系统设计方案.doc
- 电子商务对物联网技术的运用.docx
- 基于网络环境的小学信息技术微课教学探究-(3).doc


