当前位置: 首页 > news >正文

大数据-Spark-Spark开发高频面试题

一、spark的内存分布

堆内内存:在这使用堆内内存的时候,如果我们设置了堆内内存2个g的话,读取的数据也是两个g,此时又来两个g的数据,这样就会产生OOM溢出,因为处理完两个g的数据,并不会马上进行GC。
堆外内存:这样我们就可以使用堆外内存,也就是物理内存,堆外内存可以精准的申请和释放空间,不需要Gc,性能比较高,提升了任务的效率。

二、Spark的宽窄依赖

宽依赖:一个父RDD分区中的数据划分到多个子RDD分区的过程,也就说明有shuffle的过程。如GroupByKey,reduceByKey,join,sortByKey等。
窄依赖:一个父RDD分区中的数据被一个子RDD分区所使用,map,filter。

三、Spark中reduceByKey和groupByKey的区别

reduceByKey:按照key进行聚合,在shuffle之前有个combine预聚合的操作,返回的结果是RDD(K,V)
groupByKEy:直接按照key进行进行分组,直接进行shuffle
建议使用reduceByKey 但注意是否会影响最终的业务逻辑

四、Spark的缓存

将频繁使用的RDD进行缓存到内存中,后面RDD用到的时候去内存中区就不需要重复了,提高任务的执行效率
cache时间数据保存在内存中
程序结束后会被清除或手动调用unpersist方法清除
会记录RDD的血缘关系

五、什么是RDD

一个弹性分布式的数据集
数据可以保存在内存中也可以保存在磁盘中
他是一个分布式的计算的集合
RDD有3个特征分区、不可变、并行操作
RDD是有好多分区组成的,操作RDD的时候,对RDD里的每个分区进行操作
RDD使用算子进行操作
算子分为转换算子与行动算子

六、Spark落盘场景

在shuffle中会进行落盘的操作
shuffle分为shuffle write和shuffle read
在这期间会进行一次落盘操作

七、Spark的shffle

Spark使用涉及到一些shuffle算子的时候就会进行shuffle
shuffle的过程:

八、Spark内存OOM的情况

1. map过程中产生大量对象导致内存溢出
2. 数据不平衡导致内存溢出
3. coalesce调用导致内存溢出
4. shuffle后内存溢出
5. standalone模式下资源分配不均匀导致内存溢出
6. 在RDD中,公用对象能减少OOM的情况

九、怎样避免SparkOOM

1. 使用mapPartition代替部分map操作,或者连续使用map的操作
2. broadcast join和普通join
3. 先filter在join
4. partitionBy优化
5. combineDyKey的使用
6. 参数优化

十、Spark shuffle的默认并行度

由spark.sql.shuffle.partitions决定默认并行度为200,数据量比较的是并且集群性能可以的时候也已适当的加大

十一、Coalesce和Repartition的区别

Coalesce和Repartition两个都是用来改变分区的,Coalesce用来缩减分区但不会进行shuffle,Repartition用来增加分区会进行shuffle的操作,在spark中减少文件个数会使用coalesce来减少分区,但如果分区量过大,分区数过少就会出现OOM,所以coalesce缩小分区个数也需合理。

十二、如何使用spark实现TopN的操作

方法一:(1)按照key对数据进行聚合(reduceByKey)(2)将value转换为数组,利用scala中sortBy或者sortWith进行排序(mapValues)数据量太大,会OOM。
方法二:(1)自定义分区器,按照key进行分区,使不同的key进到不同的分区中(2)对每个分区运用spark的排序算子进行排序

十三、spark中的共享变量

累加器是spark中提供的一种分布式变量机制,其原理类似与mapreduce先分后合,累加器的一个常用用途在对作业执行中的事件进行计数。而广播变量用来搞笑分发较大的对象。

十四、Coalesce和Repartition的关系与区别

关系:都是用来修改RDD的partition数量的,repartiotion底层调用的就是coalesce()方法coalesce(numPaitition,shuffle=true)
区别:repartiotion一定会发生shuffle,coalesce根据传入的参数来判断是否会发生shuffle一般情况下增大rdd的partition的数量使用repartition,减少partition数量使用coalesce

十五、Spark的调优

遵循几个原则
原则一:避免重复使用的RDD
原则二:尽可能复用一个RDD
原则三:对多次使用的RDD进行持久化
原则四:尽量避免使用shuffle类的算子
原则五:使用map-side预聚合的shuffle操作
原则六:使用高性能的算子
原则七:广播大变量
原则八:使用Kryo优化序列化性能
原则九;优化数据结构

十六、Spark中RDD与DataFream及DataSet之间的关系

宏观:RDD:弹性分布式数据集Datafream在RDD上多了一层schemaDataset在datafream之上多了一个数据结构
微观:RDD:优点 编译时:编译时可以检查类型是否安全面向对象的风格:可以通过直接点方法对数据进行操作缺点 序列化与反序列化消耗资源太大,反序列化时会将数据结构与数据内容都序列化GC操作频繁,RDD要频繁的创建和销毁,务必会产生很多的GC操作Datafream:在RDD之上引入一层schemaoff-head多个RDD每行的数据结构都一致,spark就可以通过schema来识别数据结构在反序列化的时候可以只反序列化数据而结构就可以省略掉了Dataset:综合了RDD与Datafream的优点,并引入encoding数据再进行序列化时ancoding出来的字节码和off-head互通,这样就可以按需读取数据			
三者之间的转换:rdd - df = toDFrdd - ds = toDSdf - ds = as[]ds - df = toDFds - rdd = RDDdf - rdd = RDD

十七、简述介绍sparkStreaming窗口函数的原理

窗口函数就是在原来定义的sparkStreaming计算批次大小的基础上在进行封转,每次计算多个批次的数据,同时还需要传递一个滑动步长的参数,用来设置当前任务完成之后下次从什么地方开始计算。

十八、SparkStreaming精准一次消费

1. 手动维护偏移量
2. 处理完业务数据后,在进行提交偏移量的操作
极端条件下,如果在提交偏移量断网或停电会造成spark程序第二次启动时重复消费问题,所以在涉及到金额或精确度非常高的场景会使用事务保持精准一次消费。

相关文章:

大数据-Spark-Spark开发高频面试题

一、spark的内存分布 堆内内存:在这使用堆内内存的时候,如果我们设置了堆内内存2个g的话,读取的数据也是两个g,此时又来两个g的数据,这样就会产生OOM溢出,因为处理完两个g的数据,并不会马上进行…...

云原生容器平台——新华资产数字化转型加速器

新华资产管理股份有限公司(以下简称“新华资产”)于2006年5月经中国保险监督管理委员会批准、7月3日正式挂牌成立,是国内首批专业保险资产管理机构。2020年上半年,公司管理的资产规模突破万亿元人民币,投资收益水平居行…...

ubuntu 22.04运行opencv4的c++程序遇到的问题

摘要:本文介绍一下在ubuntu系统中,运行一个最简单的opencv4程序都出问题的解决方法,并对其基本原理作简单阐述。解决问题的方法有很多,本文只提供其中一种。 opencv版本是4.2.0,ubuntu版本是20.04 查询opencv版本的指…...

MDPI模板报错的问题---提示缺少sty文件

MDPI模板报错的问题—提示缺少sty文件 平时大多数提交IEEE trans模板时大多使用CTEX编译,然而,MDPI模板需要用texlive,二者之间如果先安装CTEX后安装texlive将会导致库文件的冲突。结果将会报缺少sty的文件错。网上提供了很多解决方案&#…...

【教程】微信小程序导入外部字体详细流程

前言 在微信小程序中,我们在wxss文件中通过font-family这一CSS属性来设置文本的字体,并且微信小程序有自身支持的内置字体,可以通过代码提示查看微信小程序支持字体: 这些字体具体是什么样式可以参考: 微信小程序--字…...

关于Kali部署OneForAll,不能运行问题

问题描述 运行OneForAll后,出现了如下报错 问题: importterror:无法从’re’导入名称’sre_parse’ (/usr/lib/python3.11/re/init.py) Traceback (most recent call last):File "/home/kali/桌面/App/OneForAll/oneforall.py", line 16, in…...

vue3中使用el-upload + tui-image-editor进行图片处理

效果如下 看之前请先看上一篇《vue3中使用组件tui-image-editor进行图片处理》中的 1、第一步安装 2、第二部封装组件 本篇只是在这基础上结合el-upload使用组件 3、第三步结合el-upload使用组件 <template><el-dialog:title"dialogTitle":modelValue&qu…...

二叉树顺序结构及实现

&#x1f449;二叉树顺序结构及实现 1.二叉树的顺序结构2.堆的概念及结构3.堆的实现3.1堆向下调整算法3.2堆向上调整算法 4.堆的创建4.1堆创建方法14.1.1构建堆结构体4.1.2堆的初始化4.1.3堆数据添加向上调整4.1.4主函数内容 4.2堆的创建方法24.2.1堆数据添加向下调整 4.3堆数据…...

python读取influxdb中数据

示例代码一&#xff1a;从infludb中获取指定时间段time和value值&#xff0c;并作图保存 from influxdb_client import InfluxDBClient import matplotlib.pyplot as plt# InfluxDB连接信息 url "http://localhost:8086" token "your_token" org "…...

【网络编程】UDP Socket编程

UDP Socket编程 一. DatagramSocket二. DatagramPacket三. InetSocketAddress四. 执行流程五. 代码示例: UDP 回显服务器 数据报套接字&#xff1a; 使用传输层 UDP 协议 UDP: 即 User Datagram Protocol&#xff08;用户数据报协议&#xff09;&#xff0c;传输层协议。 UDP…...

[GIT]版本控制工具

[GIT]版本控制工具 Git 的命令Git 的配置信息查看现有 Git 配置信息设置 Git 配置信息用户信息配置文本编辑器配置差异分析工具配置 编辑 Git 配置文件 Git 仓库操作初始化 Git 仓库克隆 Git 仓库Git 分支仓库创建Git 远程仓库命令 Git 提交历史Git 标签添加标签查看已有标签删…...

Linux文件管理命令

Linux命令行 命令空格参数(可写可不写)空格文件(可写可不写)ls/opt 根目录下的opt文件夹ls-a 显示所有文件及隐藏文件/optls -l 详细输出文件夹内容 ls -h 输出文件大小(MB...)ls--full-time 完整时间格式输出ls-d 显示文件夹本身信息&#xff0c;不输出内容ls-t 根据最后修改…...

Netty面试题(三)

文章目录 前言一、如何选择序列化协议&#xff1f;二、Netty 的零拷贝实现&#xff1f;总结 前言 如何选择序列化协议&#xff1f;Netty 的零拷贝实现&#xff1f; 一、如何选择序列化协议&#xff1f; 具体场景 对于公司间的系统调用&#xff0c;如果性能要求在 100ms 以上的…...

risc-v dv源代码分析

地址为 GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verificationRandom instruction generator for RISC-V processor verification - GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verif…...

C语言基础语法复习07-c语言关键字的解释

对前一篇文章写点随笔&#xff1a;https://blog.csdn.net/weixin_43172531/article/details/132893176 基本数据类型(8种)和类型修饰符(4种)&#xff1a; void与指针*组合在一起才有具体实体意义。 void本身代表没有类型、没有实体&#xff0c;例如void main(void)。 char c…...

阿里巴巴全店商品采集教程,阿里巴巴店铺所有商品接口(详解阿里巴巴店铺所有商品数据采集步骤方法和代码示例)

随着电商行业的快速发展&#xff0c;阿里巴巴已成为国内的电商平台之一&#xff0c;拥有着海量的商品资源。对于一些需要大量商品数据的商家或者需求方来说&#xff0c;阿里巴巴全店采集是非常必要的。本文将详细介绍阿里巴巴全店采集的步骤和技巧&#xff0c;帮助大家更好地完…...

Android 白天黑夜模式设置

白天黑夜模式是一种动态的UI模式,根据当前时间或用户设置的偏好,在白天和黑夜之间进行切换。它通过调整应用程序的颜色、亮度和其他可视化元素来提供更加舒适和易读的用户界面。 一、简单设置 UiModeManager 是用于管理和控制用户界面模式(UI Mode)。它提供了一组方法,允…...

FFMpeg zoompan 镜头聚焦和移动走位

案例 原始图片 # 输出帧数&#xff0c;默认25帧/秒&#xff0c;25*4 代表4秒 # s1280x80 # 输出视频比例&#xff0c;可以设置和输入图片大小一致 # zoom0.002 表示每帧放大的倍数&#xff0c;下面代码是25帧/每秒 * 4秒&#xff0c;共1000帧 # 最终是 0.002*25*4 0.2&…...

利用hutool工具类实现验证码功能

hutool工具类实现验证码 一.生成验证码二.校验验证码三.使用案例1.引入hutool工具类2.VerifyCodeResp接口响应体3.VerifyCodeController验证码工具类4.测试验证5.项目结构及源码下载 利用hutool工具类&#xff0c;可以很方便生成不同类型的验证码。这里简单记录下使用过程。 一…...

前端面试题: 请解释什么是函数的作用域?

今天做到了一道题&#xff1a;请解释什么是函数的作用域&#xff1f; 我给的答案是&#xff1a; 函数的作用域是指函数执行到内部后创建的数据空间&#xff0c;在函数的作用域内&#xff0c;let定义的变量的有效期为函数作用域 AI觉得我答得比较简单&#xff1a;回答基本正确&…...

华为云云服务器云耀L实例评测 | 华为云云服务器实例新品全面解析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

Nginx配置SSL证书

1 Ubuntu 20.04 上安装 Nginx Nginx 发音 “engine x” ,是一个开源软件&#xff0c;高性能 HTTP 和反向代理服务器&#xff0c;用来在互联网上处理一些大型网站。它可以被用作独立网站服务器&#xff0c;负载均衡&#xff0c;内容缓存和针对 HTTP 和非 HTTP 的反向代理服务器。…...

一,安卓aosp源码编译环境搭建

系列文章目录 第一章 安卓aosp源码编译环境搭建 第二章 手机硬件参数介绍和校验算法 第三章 修改安卓aosp代码更改硬件参数 第四章 编译定制rom并刷机实现硬改(一) 第五章 编译定制rom并刷机实现硬改(二) 第六章 不root不magisk不xposed lsposed frida原生修改定位 第七章 安卓…...

video 视频编解码一些debug方法

文章目录 一、通过命令去获取一些数据1.2 确定我们xml配置文件: 二、查看我们芯片支持的编码能力三、通过log去获取信息 这个文章的主要内容是为了后期性能方面的debug, 设计到前期的bringup则没有 一、通过命令去获取一些数据 获取媒体相关的参数&#xff1a; # getprop |…...

中秋国庆假期——模板推荐

要说最近能让人开心的事情是什么?大概就是下周将迎来8天假&#xff0c;小编帮大家数了数还有11天&#xff0c;就要放中秋国庆的假期了。作为一个资深打工人&#xff0c;本周的日常即将变成&#xff1a;上班想放假、下班想放假、想放假… 但是宝子们要注意&#xff0c;大家在盼…...

【配代码演示】Cookie和Session的区别

一、共同之处&#xff1a; cookie和session都是用来跟踪浏览器用户身份的会话方式。 二、工作原理&#xff1a; 1.Cookie的工作原理 &#xff08;1&#xff09;浏览器端第一次发送请求到服务器端 &#xff08;2&#xff09;服务器端创建Cookie&#xff0c;该Cookie中包含用户的…...

【Linux初阶】信号入门2 | 信号阻塞、捕捉、保存

文章目录 ☀️前言☀️一、信号阻塞&#x1f33b;1.信号其他相关常见概念&#x1f33b;2.信号在内核中的表示 ☀️二、信号捕捉&#xff08;重点&#xff09;&#x1f33b;1.用户态 & 内核态&#x1f33b;2.如何判断进程处于用户态或内核态&#x1f33b;3.OS接口的访问方法…...

【已解决】:该该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)“按钮获取它的所有权。否则,请按“取消(C)“按钮以防损坏。

现象 启动VMware虚拟机&#xff0c;无法正常打开并出现以下信息&#xff1a; 原因 这是因为当运行一个“虚拟系统”时&#xff0c;为防止该系统被另外一个VMware程序打开&#xff0c;导致数据被修改或损坏&#xff0c;VMware会自动在该“虚拟系统”所在的文件夹下&#xff0c…...

系统架构常用的工具

HBase HBase是一个分布式的、面向列的开源数据库&#xff0c;该技术来源于 Fay Chang 所撰写的Google论文“Bigtable&#xff1a;一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统&#xff08;File System&#xff09;所提供的分布式数据存储一样&#xff…...

腾讯云2核4G服务器5M带宽 218元一年 优惠价格明细表

腾讯云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS&#xff0c;轻量2核4G5M带宽服务器218元一年&#xff1a; 腾讯云2核4G服务器5M带宽收费 腾讯云2核4G服务器可以选择轻量应用服务器或者ECS云服务器&#xff0c;云服务器ECS是专业级云服务器&#xff0c;大多数使用…...

网站内容添加/免费优化网站

图&#xff1a;微博内地人工智慧(AI)企业银河水滴昨日在北京发布全球首个“步态识别”系统&#xff0c;具有步态建库、步态识别、步态检索、大范围追踪等功能。据了解&#xff0c;即使目标人物遮住脸&#xff0c;也可以透过走路方式辨认出身份。有关的“步态识别”系统已在北京…...

网站栅格化怎么做/沈阳seo关键词

第5章 使用高级查询技术 一&#xff1a;用已映射语句关联对象 问题&#xff1a;如果你用过Hibernate或JPA&#xff0c;会想到entity&#xff08;实体对象 -- 数据库对应JavaBean&#xff09;之间可能存在关联关系。如一对一、多对多等。伴随就出现了关联获取技术&#xff0c;我…...

独立站有哪些常见平台/惠州seo外包公司

题目如下 l&#xff08;编程题&#xff09;信用卡号验证 当你输入信用卡号码的时候&#xff0c;有没有担心输错了而造成损失呢&#xff1f;其实可以不必这么担心&#xff0c;因为并不是一个随便的信用卡号码都是合法的&#xff0c;它必须通过Luhn算法来验证通过。 该校验的过程…...

seo竞争对手网站分析/惠州百度推广优化排名

文章目录前言一、微信支付小程序确认支付结果和退款功能实现1.确认支付结果2.退款功能实现前言 微信小程序在支付成功后会给注册的接口发消息来通知订单支付成功的状态&#xff0c;下面是微信和接口通信的数据格式&#xff1a; 微信通知频率为: 15s/15s/30s/3m/10m/20m/30m/…...

潍坊住房与城乡建设局网站/发布平台

一、物理层概念 确定与传输媒体的接口有关的一些特性&#xff1a; &#xff08;1&#xff09;机械特性&#xff1a;描述接线器的形状。引脚数目和排列。线序的描述。 &#xff08;2&#xff09;电气特性&#xff1a;指明在接口电缆的个条线上出现的电压的范围。 &#xff08;3…...

这几年做哪些网站致富/营销策划方案包括哪些内容

虽然现在jdk已经已经到了14【截至2020-08-15】&#xff0c;但是jdk8仍然是使用最广的版本&#xff0c;它的新特性不仅在我们日常开发中用到&#xff0c;在面试中也是一个经常被提问的点&#xff0c;所以对一些常用的还是需要知道的&#xff0c;我也只写一些常用的&#xff0c;有…...