面试系列之《Spark》(持续更新...)

1.job&stage&task如何划分?

job:应用程序中每遇到一个action算子就会划分为一个job。
stage:一个job任务中从后往前划分,分区间每产生了shuffle也就是宽依赖则划分为一个stage,stage这体现了spark的pipeline思想,即数据在内存中尽可能的往后多计算,最后落盘,减少磁盘IO。
task:RDD中一个分区对应一个task。

2.什么是宽依赖和窄依赖?

根据分区之间是否产生shuffle来确定。
宽依赖:上游一个分区的数据被打散到下游的多个分区,1:N
窄依赖:上游一个分区的数据全部进入到下游的一个分区,1:1 or N:1

3.Spark有哪几种部署模式,有什么区别?

1.Local:本地模式,运行在单个机器,一般用作测试环境。
2.Standalone:一个基于Master+Slaves的资源调度集群。spark任务提交给Master调度管理,是spark自带的一个调度系统。
3.Yarn:spark客户端直接连接yarn,不需要额外构建spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:driver程序的运行节点。yarn-client时driver运行在本地提交任务的客户端,yarn-cluster是driver运行在集群中随机的任一节点。
4.Mesos:比较少用,不了解。
5.K8s:spark后续高版本新增支持。

4.Spark中算子有哪些类型?分别举例。

一共有3种算子类型:转换算子(Transformation)、动作算子(Action)、控制算子(cache、persist、checkpoint)
转换算子:返回一个新的RDD
动作算子:不返回RDD,返回RDD的值或将值持久化存储。
控制算子:持久化内存、磁盘或HDFS。返回原被持久化的RDD而非新RDD
算子举例:
Transformation:

5.cache、persist、checkpoint的区别,及各自的使用场景?

6.广播变量与累加器

1)广播变量

简而言之,就是在每个集群节点中缓存一份driver端定义的公共变量,且该被广播的变量在executor中只读。
当不使用广播变量的时候,spark任务中需要用到的公共变量会copy到每个task中,这种方式弊端一是重复存储占用内存资源,二是增加了IO操作。而使用广播变量,driver端定义的公共变量只会往每个集群中的worker节点中copy一份,由executor中的所有task共享。且该方法的底层实现涉及到了序列化与反序列化以及高效的广播算法,所以效率较高。
详细参考官网:https://spark.apache.org/docs/3.1.2/rdd-programming-guide.html#shared-variables

广播变量 demo

from pyspark.sql import SparkSession

"""
需求:从rdd中过滤掉黑名单“blacklist”中的角色
"""
spark = SparkSession.builder \
    .master("local[*]") \
    .appName("broadcast_demo") \
    .config("spark.executor.instances", "4") \
    .config("spark.executor.cores", "2") \
    .config("spark.executor.memory", "1g") \
    .getOrCreate()
sc = spark.sparkContext
rdd = sc.parallelize([("101", "梁静茹"), ("102", "王菲"), ("103", "王诗安"), ("104", "李宗盛")], 2)
print(f"过滤前:{rdd.collect()}")
blacklist = ["101", "103"]
bc = sc.broadcast(blacklist)
rdd_filter = rdd.filter(lambda x: x[0] not in bc.value)
print(f"过滤后:{rdd_filter.collect()}")
sc.stop()
spark.stop()

在这里插入图片描述

2)累加器

累加器,简要的概括,是一种分布式共享只写变量。

7.reduceByKey与groupByKey的区别?

https://blog.csdn.net/atwdy/article/details/133155108

8.spark调优及数据倾斜

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

普中51单片机学习(十四)

中断系统 中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务),待CPU将事件B处理完毕后,再回到原来事件…

js_三种方法实现深拷贝

深拷贝( 递归 ) 适用于需要完全独立于原始对象的场景,特别是当对象内部有引用类型时,为了避免修改拷贝后的对象影响到原始对象,就需要使用深拷贝。 // 原始对象 const obj { uname: Lily,age: 19,hobby: [乒乓球, 篮球…

BGP 邻居建立

拓扑图 配置 BGP进程号及为AS号 使用环回口建立BGP邻居关系时,需要指定更新源地址 EBGP在使用环回口建立邻居关系时,需配置EBGP多跳,环回口路由可达 EBGP的路由器存在IBGP邻居时,需要配置next-hop-local,保证下一跳…

Midjourney风格一致功能解读及使用方法

Midjourneys再次迎来更新,本次新增“风格一致”功能!用户期待已久的风格模仿功能终于实现了! --sref 虽然目前只是测试功能,但已经相当强大了,这篇文章我将带大家先睹为快! 别忘了,这个功能目前…

Python中HTTP客户端库的比较与选择

在Python中,众多HTTP客户端库为我们提供了与Web服务进行交互的便利。每个库都有其独特的特点和适用场景,选择哪一个往往取决于项目的具体需求和个人偏好。下面,我们将对几个流行的HTTP客户端库进行比较,以助您在项目中做出明智的选…

Rabbitmq入门与应用(三)-RabbitMQ开发流程

RabbitMQ开发流程 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>配置MQ 最简配置 spring:rabbitmq:host: mq的安装机器ipport: 5672username: ad…

如何查看 CPU 占用高的进程

1、使用 top 命令&#xff0c;查看 cpu 占用超过 100% 2、查看哪个进程占用 cpu 最高&#xff08;该案例使用阿里的 arthas 来查看&#xff09; 2.1 下载&#xff1a;curl -O https://arthas.aliyun.com/arthas-boot.jar 2.2 启动命令&#xff1a;java -jar arthas-boot.jar …

VPX信号处理卡设计原理图:9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡 信号处理 无线电通信

一、概述 本板卡基于标准6U VPX 架构&#xff0c;为通用高性能信号处理平台&#xff0c;系我公司自主研发。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V690T-2FFG1761I作为主处理器&#xff0c;Xilinx 的Aritex XC7A200T作为辅助处理器。XC7A2…

AI之Sora:Sora(文本指令生成视频的里程碑模型)的简介(能力/安全性/技术细节)、使用方法、案例应用之详细攻略

AI之Sora&#xff1a;Sora(文本指令生成视频的里程碑模型)的简介(能力/安全性/技术细节)、使用方法、案例应用之详细攻略 导读&#xff1a;Sora 是OpenAI研发的一个可以根据文字描述生成视频的AI模型。它的主要特性、功能以及OpenAI在安全和应用方面的策略的核心要点如下所示&a…

2024年1月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2024年1月国产数据库大事件和重要产品发布消息。 目录 2024年1月国产数据库大事记 TOP102024年1月国产数据库大事记&#xff08;时间线&#xff09;产品/版本发布兼容认证代表厂商大事记 厂商2023年终总结合辑排行榜新增数据库厂商活动 2024年1月国产…

【LeetCode: 105. 从前序与中序遍历序列构造二叉树 + DFS】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【教3妹学编程-算法题】相同分数的最大操作数目 I

3妹&#xff1a;2哥&#xff0c;干嘛呢&#xff0c;怎么又在吃泡面 2哥 : 这不是过年下血本&#xff0c;给小侄子买了一个ps5吗&#xff0c; 哎&#xff0c;我自己都舍不得用&#xff0c;不能让人说咱小气不是。 3妹&#xff1a;神马&#xff0c;他才6岁吧&#xff0c; 就这么喜…

[linux小程序]进度条

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.缓冲区2&#xff0…

Panalog大数据日志审计系统libres_syn_delete.php存在命令执行漏洞

文章目录 前言声明一、Panalog大数据日志审计系统简介二、漏洞描述三、影响版本四、漏洞复现五、整改意见 前言 Panalog大数据日志审计系统定位于将大数据产品应用于高校、 公安、 政企、 医疗、 金融、 能源等行业之中&#xff0c;针对网络流量的信息进行日志留存&#xff0c…

01-架构的概述

1、定义 软件架构就是软件的顶层结构 RUP&#xff08;统一过程开发&#xff09;4 1 视图 1&#xff09;逻辑视图&#xff1a; 描述系统的功能、组件和它们之间的关系。它主要关注系统的静态结构&#xff0c;包括类、接口、包、模块等&#xff0c;并用于表示系统的组织结构…

VSCode使用Remote-SSH连接服务器时报错:启动服务器失败问题

VSCode使用Remote-SSH连接服务器时报错&#xff1a;启动服务器失败问题 问题描述解决方法引用 问题描述 第一天上班&#xff0c;回来发现又不能使用VScode连不上服务器了&#xff0c;在「输出」栏出现了一直报 Waiting for server log… 的情况&#xff01;本来以为是普通的连接…

Windows 重启 explorer 的正确做法

目录 一、关于 Restart Manager 二、重启管理器实例 三、完整实现代码和测试 本文属于原创文章&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/qq_59075481/article/details/136179191。 我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者…

如何系统地自学Python?

如何系统地自学Python&#xff1f; 如何系统地自学Python&#xff1f;1.了解编程基础2.学习Python基础语法3.学习Python库和框架4.练习编写代码5.参与开源项目6.加入Python社区7.利用资源学习8.制定学习计划9.持之以恒总结 如何系统地自学Python&#xff1f; 作为一个Python语…

智能家居中可自行收集能量的无电池的无线设备

此图片来源于网络 1、背景 ZigBee是一种基于IEEE 802.15.4标准的低速短距离无线通信技术&#xff0c;用于创建个人区域网络。其名称来源于蜜蜂的八字舞&#xff0c;因为蜜蜂通过这种舞蹈来与同伴传递花粉的所在方位信息&#xff0c;从而构成了群体中的通信网络。ZigBee技术具…