面试篇spark(spark core,spark sql,spark 优化)

news2024/9/25 19:21:19

一:为什么学习spark?

相比较map-reduce框架,spark的框架执行效率更加高效。
mapreduce的执行框架示意图。
在这里插入图片描述
spark执行框架示意图
在这里插入图片描述
spark的执行中间结果是存储在内存当中的,而hdfs的执行中间结果是存储在hdfs中的。所以在运算的时候,spark的执行效率是reduce的3-5倍。

二:spark是什么?

spark是一个执行引擎。

三:spark包含哪些内容?

1. spark core。

spark RDD五大特性。

1. RDD是由一系列partition组成的。

每个rdd中,partition的个数和由hdfs中的map的个数决定的。和map的个数保持一致。

2. 每个RDD会提供最佳的计算位置。

3. 每个函数会作用在每个partition上。

算子
  1. 转换算子
    常见 Transformation 类算子
    filter :过滤符合条件的记录数, true 保留, false 过滤掉。
    map :将一个 RDD 中的每个数据项,通过 map 中的函数映射变为一个新的元素。特点:输入
    一条,输出一条数据。
    flatMap :先 map 后 flat 。与 map 类似,每个输入项可以映射为0到多个输出项。
    sample 随机抽样算子,根据传进去的小数按比例进行有放回或者无放回的抽样。
    reduceByKey 将相同的 Key 根据相应的逻辑进行处理。
    sortByKey / sortBy 作用在 K,V格式的RDD 上,对 key 进行升序或者降序排序。
  2. 行动算子
    count :返回数据集中的元素数。会在结果计算完成后回收到 Driver 端。
    take(n) :返回一个包含数据集前 n 个元素的集合。
    first :效果等同于 take(1) ,返回数据集中的第一个元素。
    foreach :循环遍历数据集中的每个元素,运行相应的逻辑。
    collect :将计算结果回收到 Driver 端
  3. 持久化算子
    cache:默认将 RDD 的数据持久化到内存中。 cache 是懒执行。
    checkpoint:checkpoint 将 RDD 持久化到磁盘,还可以切断 RDD 之间的依赖关系,也是懒执行。

4. RDD之间相互依赖。

RDD的宽窄依赖。
一对一的就是窄依赖。
一对多的就是宽依赖。
在计算进行切割的时候,会将所有的窄依赖放在一起,成为一个stage。放在一个TaskScheduler中进行计算。
在这里插入图片描述

5. 分区器是作用在 (K,V) 格式的 RDD 上。

shuffle
HashShuffle
在这里插入图片描述

SortShuffle
在这里插入图片描述
在这里插入图片描述
bypass机制

shuffle map task的数量小于spark.shuffle.sort.bypassMergeThreshold参数的值(默认200)或者不是聚合类的shuffle算子(比如groupByKey)

在这里插入图片描述
Shuffle文件寻址
在这里插入图片描述

2. spark的俩种提交模式。

用于测试
在这里插入图片描述
用于生产
在这里插入图片描述

在这里插入图片描述

2. spark sql。

  1. RDD和dataFromes和dataset。
    dataset包含dataFormes,dataFormes包含RDD。
  2. Spark on hive 和hive on spark
    Spark on hive 中,hive是存储,spark负责sql的优化和解析。
    hive on Spark中,Hive即作为存储又负责sql的解析优化,Spark负责执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1263148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解强化学习——马尔可夫决策过程:贝尔曼期望方程-[举例与代码实现]

分类目录:《深入理解强化学习》总目录 在文章《深入理解强化学习——马尔可夫决策过程:贝尔曼期望方程-[基础知识]》中我们讲到了贝尔曼期望方程,本文就举一个贝尔曼期望方程的具体例子,并给出相应代码实现。 下图是一个马尔可夫…

Harmony OS4开发入门

代码地址: https://gitee.com/BruceLeeAdmin/harmonyos/tree/master 项目目录介绍 ArkTS介绍 简单案例: State times: number 0/*数据类型:stringnumberany: 不确定类型,可以是任意类型*/State msg: string "hello"…

正点原子linux应用编程——提高篇1

在之前的入门篇学习中,都是直接在Ubuntu中进行验证的,对于嵌入式Linux系统来说,也是可以直接移植的,只需要使用嵌入式硬件平台对应的交叉编译工具编译应用程序即可运行。 在嵌入式Linux系统中,编写的应用程序通常需要…

uniapp使用vue3和ts开发小程序获取用户城市定位

这个组件的功能:可以重新定位获取到用户的具体位置,这个是通过getLocation这个api和高德地图的api获取到的,getLocation这个api需要在微信公众平台后台>开发管理> 接口管理里面申请才能使用的,不然无法使用哦,这…

数学老师怎么和家长沟通

作为一名数学老师,与家长建立良好的沟通关系是非常重要的。以下是我个人认为可以帮助与家长有效沟通的建议: 建立良好的第一印象 第一次与家长接触时,要尽可能展现出你的专业素养和热情。在交流中,要表达出你对孩子的关心和重视&…

Android 编译的配置文件:android.mk 和android.bp

Android.bp文件首先是Android系统的一种编译配置文件,是用来代替原来的Android.mk文件的。在Android7.0以前,Android都是使用make来组织各模块的编译,对应的编译配置文件就是Android.mk。在Android7.0开始,Google引入了ninja和kat…

接口文档自动生成工具:详细教程和实用技巧

本篇文章详细教你如何使用 Apifox 的 IDEA 插件实现自动生成接口代码。好处简单总结有以下几点: 自动生成接口文档: 不用手写,一键点击就可以自动 生成文档,当有更新时,点击一下就可以自动同步接口文档;代…

小程序静默授权获取unionid

文章目录 导文文章重点 导文 小程序静默授权获取unionid 文章重点 用wx.login(Object object)放到app.js里面 wx.login({success (res) {console.log(123);if (res.code) {//发起网络请求// wx.request({// url: https://example.com/onLogin,// data: {// code: res.…

ERRO报错

无法下载nginx 如下解决: 查看是否有epel 源 安装epel源 安装第三方 yum -y install epel-release.noarch NGINX端口被占用 解决: 编译安装的NGINX配置文件在/usr/local/ngin/conf 修改端口

AI - Navmesh 寻路

用cocos2dx引擎简单实现了一下navmesh的多边形划分,然后基于划分多边形的a*寻路。以及路径拐点优化算法 用cocos主要是方便使用一些渲染接口和定时器。重点是实现的原理。 首先画了一个带有孔洞的多边形 //多边形的顶点数据Vec2(100, 100),Vec2(300, 200),Vec2(50…

程序员的软件开发帮手,低代码当仁不让

目录 一、低代码是什么? 二、低代码的能力表现 1.提供可视化开发 2.预构建的组件和模板 3.集成的开发和测试工具 4.跨平台兼容性 5.可伸缩性和可扩展性: 跟随互联网信息技术快速发展的脚步,各行各业都在积极拥抱数字化转型。在这个过程中&…

详解STL库—map和set

目录 一、关联式容器 二、键值对 SGI-STL中关于键值对的定义: 三、set 3.1 set的介绍 3.2 set的使用 1.set的模板参数列表​编辑 2. set的构造 3. set的迭代器 4. set的容量 5. set修改操作 6. set的使用举例 四、map 4.1map的介绍 4.2 map的使用 1…

国产操作系统-银河麒麟V10

一、介绍 银河麒麟操作系统隶属于麒麟软件,麒麟软件是专业从事国产操作系统研发和产业化的企业,面向通用和专用领域打造安全创新的国产操作系统产品和相应解决方案,旗下拥有银河麒麟、中标麒麟、星光麒麟三大产品品牌。 麒麟软件官方网站地…

【攻防世界-misc】glance-50

1.得到一个动图 2.使用GIF动态图片分解,多帧动态图分解成多张静态图片_图片工具网页版,将图片定格组合, 由此得到flag值,拼写提交。

卡码网语言基础课 | 15. 链表的基础操作Ⅲ

目录 一、 插入链表的过程 二、 删除链表的过程 三、 打印链表 3.1 判断节点是否处于链尾 3.2 打印链表 3.3 循环体结束,遍历打印 题目: 请编写一个程序,实现以下链表操作:构建一个单向链表,链表中包含一组整数…

c++没有返回值的返回值

上面的函数search没有返回值,因为a不等于1,但是输出的时候会输出6.这恰巧是x的值,如果我们希望a不等于1时返回x,那么这种结果反而是正确的.有时候这种错误的代码可能产生正确的结果反而会加大debug难度 int search(int n) { 00007FF66DB723E0 mov dword ptr [rsp8],e…

【Linux系统编程】进程概念详解(什么是进程?如何查看进程?)

目录 一、前言 二、 什么是进程? 💦引出进程 💦进程的基本概念 💦理解进程 ⭐描述进程--PCB(进程控制块) ⭐组织进程 三、查看进程 💦 通过 ps 命令查看进程 💦 通过 l…

事件代理?

1.什么是事件代理? 事件代理也叫事件委托,只指定一个事件处理程序,就可以管理某一类型得事件。 可以简单理解为,事件代理就是将本应该绑定子元素事件绑定给父元素代理。它的优点就是:减少事件得执行,减少浏…

2023/11/28JAVAweb学习

查找哪个进程占用了该端口号 跳过某一个阶段

欧拉公式推导

欧拉恒等式 函数推导过程(幂级数展开的方式近似,后面用到了三角函数展开的方式) 从导数中推导的方程,对于该函数当x0时为1即初值,导数为自身; 设,当x 0时, 因为函数是收敛的所以会越来越精确(引用自MIT公开课&#xf…