大数据学习之常见问题1

1、什么是数据仓库?

数据仓库:对数据进行采集、清洗、加工和输出

是一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理决策过程。

2、通常情况下,分哪些层,分别干什么?

ods:数据贴源层。ODS层作为数据仓库的基础层,**主要用于存储从各个操作系统或业务系统中采集来的原始数据。**这些数据未经任何处理(一般情况xia),保持了数据的完整性和细节。

dwd:明细粒度事实层。DWD层作为数据仓库的明细层,存储了详细、完整的数据。每个数据元组都被完整地保存,没有任何聚合,方便后续的数据分析和挖掘。

dws:公共汇总粒度事实层。**DWS层通过对DWD层中的数据进行聚合和汇总,形成宽表,进而提升数据分析性能。**这些宽表通常按照主题进行组织,满足特定主题和不同维度的分析需求。

ads:数据应用层。ADS层是数据仓库的另一个重要组成部分,它提供了一个面向分析的高性能数据存储环境。

3、维度建模的过程?

选择业务过程、声明粒度、确定维度、确定事实、模型评审与验证、优化与维护

4、什么是雪花模型,什么是星型模型?

雪花模型:它是星型模型的一个扩展,有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上

星型模型:星型模型是多维的数据关系,它由事实表(Fact Table)和维表(Dimension Table)组成。每个维表中都会有一个维作为主键,所有这些维的主键结合成事实表的主键。所有维表都直接连接到“事实表”上
在这里插入图片描述
在这里插入图片描述

5、事实表分为哪些事实表?

事务事实表

周期快照事实表

累计快照事实表

6、什么是拉链表?

拉链表是针对数据仓库设计中表存储数据的方式而定义的一种数据结构,主要用于记录维度表中数据的历史变化。

就是通过记录历史的方式,来保存一个事物从开始到当前状态的所有变化信息。

7、datax中如何实现增量同步?

设置同步条件:“where”: “sum_score < 100”,

在reader(“name”: “mysqlreader”)中进行设置

8、dataworks中使用什么变量获取前一天的日期?${bizdate}

阿里云部分

${bizdate}

9、scala中函数柯里化?

面试题:什么是函数柯里化?

1、本身是一个数学界的一个名词,本意是原来一次传递多个参数,现在被改成了可以分开传递的形式,这种做法叫做柯里化

2、在scala中体现柯里化,指的是函数的返回值也是一个函数,将来调用时参数可以分开传递。

3、提高了程序的灵活性和代码复用性

4、在scala中也可以通过偏函数实现参数分开传递的功能

10、scala中的隐式转换聊一聊?

1、scala中的隐式转换,本质上就是将一个类型转换成另一个类型去使用另一个类型中的功能

2、scala中的隐式转换分为3种:隐式转换函数,隐式转换类,隐式转换变量

3、隐式转换函数,在使用隐式转换函数返回值类型的功能的时候,可以自动的将参数的类型转成返回值类型进行使用

4、隐式转换类,可以自动的将构造方法的参数类型转成类的类型,将来可以直接使用构造方法中的类型调用类中的方法

5、隐式转换变量,配合函数定义中的隐式转换参数使用,

将来调用函数的时候,可以不用传入隐式转换参数的值,自动使用对应类型的隐式转换变量

当然,也可以手动传入具体的值给隐式转换参数。

11、spark和MR的区别?

MapReduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。它通过将数据集分割成小块,分配给多个节点上的Map任务进行处理,然后将Map任务的输出进行Shuffle(洗牌)和Sort(排序)后,由Reduce任务进行汇总。MapReduce的核心操作是Map和Reduce。

Spark:Spark是一个快速、通用、可扩展的大数据处理引擎。它提供了一个统一的编程模型,支持多种数据源和数据处理方式。Spark的核心概念是弹性分布式数据集(RDD),RDD是一个不可变的分布式数据集合,可以在集群中进行并行处理。Spark还支持SQL查询(通过Spark SQL)、流式处理(通过Spark Streaming)和图计算(通过GraphX)等多种数据处理模式。

MR属于细粒度资源调度

MR中的map任务或者reduce任务,遇到要执行的时候才会向yarn中申请资源

任务的执行速度整体会变慢 --》 job作业执行速度变慢

优点:不会造成资源浪费

缺点:速度慢

Spark属于粗粒度资源调度

spark会在任务调度之前,先将所需要的所有资源申请下来,然后再将task任务发送执行

优点:速度快,执行过程中无需再次申请资源

缺点:有可能申请的资源不够,导致任务执行失败;也有可能申请的资源过多,在spark作业执行期间不会释放,会造成资源的浪费

12、你用过哪些spark中的操作算子?

面试题:

spark core中 groupBy算子与groupByKey算子的区别?

1、代码格式上:

groupBy的分组条件可以自己指定,并且绝大部分的RDD都可以调用该算子,返回的是键和元素本身组成的迭代器构成的kv格式RDD

groupByKey算子,只能由kv格式的RDD进行调用,分组的条件会自动根据键进行分组,不需要在自己指定,返回的是键和值组成的迭代器构成的kv格式RDD

2、执行shuffle数据量来看

groupBy产生的shuffle数据量在一定程度上要大于groupByKey产生的shuffle数据量

所以groupByKey算子的执行效率要比groupBy算子的执行效率要高

面试题:

groupByKey与reduceBykey的区别?

相同点:

它们都是kv格式的算子,只有kv格式的RDD才能调用

不同点:

1)groupByKey只是单纯地根据键进行分组,分组后的逻辑可以在后续的处理中调用其他的算子实现

2)reduceByKey 相当于MR中的预聚合,所以shuffle产生的数据量要比groupByKey中shuffle产生的数据量少,效率高,速度要快一些

3)groupByKey的灵活度要比reduceByKey灵活度要高,reduceBykey无法做一些复杂的操作,比如方差。但是groupByKey可以在分组之后的RDD进行方差

在这里插入图片描述

13、什么是rdd?

RDD: 弹性分布式数据集

弹性:数据量可大可小

RDD类似于容器,但是本身存储的不是数据,是计算逻辑

当遇到行动算子的时候,整个spark作业才会被触发执行,从第一个RDD开始执行,数据才开始产生流动

数据在RDD之间只是流动关系,不会存储

流动的数据量可以很大,也可以很小,所以称为弹性

分布式:

spark本质上它是需要从HDFS中读取数据的,HDFS是分布式,数据block块将来可能会在不同的datanode上

RDD中流动的数据,可能会来自不同的datanode中的block块数据

数据集:

计算流动过程中,可以短暂地将RDD看成一个容器,容器中有数据,默认情况下在内存中不会进行存储

后面会有办法将一个RDD的数据存储到磁盘中(缓存)

14、rdd的五大特性?
1、RDD是由一系列分区构成

1)读文件时的minPartitions参数只能决定最小分区数,实际读取文件后的RDD分区数,由数据内容本身以及集群的分布来共同决定的

2)若设置minPartitions的数量比block块数量还少的话,实际上以block块数量来决定分区数

3)产生shuffle的算子调用时,可以传入numPartitions(例如:groupby()),可以真正改变RDD的分区数,设置多少,最终RDD就有多少分区

4)文件会以block块的形式存储在HDFS上,若文件未达到128M默认值的话也会被一个block块存储。

一开始RDD中的分区数由读取数据的block块数量决定的。

后一个RDD中的分区数据,除KV函数以外,对应的是前一个RDD中的分区数据所进行逻辑处理后的结果。默认情况下,若后续分区不做处理的话,后续所有的RDD的分区数取决于第一个RDD。

最终RDD中有几个分区,将来在HDFS中就会看到几个结果文件(HDFS -> RDD -> HDFS)

2、算子是作用在每一个分区上的(每一个分区都会处理)
3、RDD与RDD之间存在一些依赖关系

1)窄依赖 前一个RDD中的某一个分区数据只会到后一个RDD中的某唯一分区中 一对一(也可能前多个分区到后一个分区中)的关系

2)宽依赖 前一个RDD中的某一个分区数据会进入到后一个RDD中的不同分区中 一对多的关系 也可以通过查看是否产生shuffle来判断

3)整个spark作业会被宽依赖的个数划分若干个stage, Num(stage) = Num(宽依赖) + 1

4)当遇到产生shuffle的算子的时候,涉及到从前一个RDD写数据到磁盘中,从磁盘中读取数据到后一个RDD的现象,

注意:第一次触发执行的时候,磁盘是没有数据的,所以会从第一个RDD产生开始执行

当重复触发相同的执行的时候,对于同一个DAG有向无环图而言,会直接从shuffle之后的RDD开始执行(省略从前一个RDD写数据到磁盘中的过程),可以直接从磁盘读取数据。

5)**在一个阶段中,RDD有几个分区,**就会有几个并行task任务

4、kv算子只能作用在kv格式的RDD上
5、spark会提供最优的任务计算方式,只移动计算,不移动数据。

Spark的设计原则之一是数据本地化(Data Locality),即尽量让计算任务在数据所在的节点上执行,从而减少数据的网络传输开销。

15、宽依赖、窄依赖的区分?

窄依赖:子RDD的分区与父RDD的分区之间是一对一或一对固定个数的关系。这种依赖关系不会引起数据的Shuffle(重新洗牌),因此处理起来相对简单和高效。常见的窄依赖操作包括map、filter、union等。

宽依赖:一个父RDD的Partition的数据会被传输到子RDD的多个Partition中。这种依赖关系会引起数据的Shuffle,因为数据需要在不同的节点之间重新分配。宽依赖要求跨节点进行数据混洗(Shuffle),以便将来自不同父RDD分区的数据重新分配到当前RDD的分区中。常见的宽依赖操作包括groupByKey、reduceByKey等。

16、stage个数 = 宽依赖的个数 + 1

Spark会根据宽依赖来划分阶段。每个宽依赖之前的操作会被划分到一个阶段中,因为宽依赖之前的操作可以并行执行,而宽依赖之后(包括宽依赖本身)的操作需要等待宽依赖完成后的数据混洗结果才能继续执行。因此,每当遇到宽依赖时,Spark就会开始一个新的阶段。

17、spark资源调度的过程?

在这里插入图片描述

18、spark任务调度的过程?

在这里插入图片描述

19、什么是累加器,为什么需要它?

在Spark中,累加器(Accumulator)是一种特殊的分布式变量,主要用于在并行操作中累积数据。累加器只能被添加(add)操作,即它的值可以被集群中的多个任务所更新,但只能通过特定的方法(如add)进行增加,而不能减少。累加器的值最终会汇总到驱动程序(Driver Program)中,供用户查看或使用。

当累加器被创建并注册到SparkContext中时,Spark会将其发送到所有的Executor上。

在这里插入图片描述

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

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

相关文章

流量卡什么时候激活比较适合,这个问题你考虑过吗?

在办理流量卡时&#xff0c;很多朋友不知道什么时候激活比较划算&#xff0c;在这里文章里&#xff0c;小编给大家简单的说一下&#xff0c;可供参考。 ​ 1、大家要知道&#xff0c;在使用流量卡时&#xff0c;流量卡的激活时间就是号卡的入网时间&#xff0c;也是计费的开始。…

SDXL 1.0 下载和部署

SD XL 1.0 重磅更新&#xff01;免费开源可商用&#xff08;附在线使用本地部署教程&#xff09; - 优设网 - 学设计上优设 三、本地部署 SDXL 1.0 SDXL 1.0 的源文件已经在 Huggingface 上开源了&#xff0c;我们可以通过 Stable Diffusion WebUI 在本地免费使用 SDXL 1.0&am…

【深度学习】【Lora训练4】StabelDiffusion,人物lora训练

启动&#xff1a; docker run -it --gpus all --net host -v /ssd/xiedong/xiezhenceshi/lora_train:/ssd/xiedong/xiezhenceshi/lora_train kevinchina/deeplearning:pytorch2.3.0-cuda12.1-cudnn8-devel-xformers-lora-train bashrootgpu16:/workspace/lora-scripts# python…

微信小程序:vant-weapp 组件库、css 变量

vant-weapp 组件库 前往 vant-weapp 官网 npm 使用限制&#xff1a;不支持依赖于 Node.js 内置库、浏览器内置对象、C 插件 的包。 安装 vant-weapp # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i…

基于STM32智能电子锁设计

1.简介 随着时代的高速发展&#xff0c;家居安全也成为人们日常生活中的一个安全问题。目前传统的门锁使用的是机械密码&#xff0c;在安全性方面表现不佳。这些缺点可以通过改用智能电子密码锁来弥补。智能电子锁是一种使用了现代电子技术的高科技产品&#xff0c;它的出现解决…

CH03_布局

第3章&#xff1a;布局 本章目标 理解布局的原则理解布局的过程理解布局的容器掌握各类布局容器的运用 理解 WPF 中的布局 WPF 布局原则 ​ WPF 窗口只能包含单个元素。为在WPF 窗口中放置多个元素并创建更贴近实用的用户男面&#xff0c;需要在窗口上放置一个容器&#x…

15. 【C++】详解搜索二叉树 | KV模型

目录 1.定义 初始化 插入 查找 删除 完整代码 2.运用 K 模型和 KV 模型详解 K 模型 KV 模型 代码解释 为了更好地理解 map 和 set 的特性&#xff0c;和后面讲解查找效率极高的平衡搜索二叉树&#xff0c;和红黑树去实现模拟&#xff0c;所以决定在这里对搜索二叉树…

【06】LLaMA-Factory微调大模型——微调模型评估

上文【05】LLaMA-Factory微调大模型——初尝微调模型&#xff0c;对LLama-3与Qwen-2进行了指令微调&#xff0c;本文则介绍如何对微调后的模型进行评估分析。 一、部署微调后的LLama-3模型 激活虚拟环境&#xff0c;打开LLaMA-Factory的webui页面 conda activate GLM cd LLa…

基于STM32的智能加湿器设计

目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 &#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的题目是&#xff1a;《7、基于STM32的智能加湿器设计…

4 C 语言控制流与循环结构的深入解读

目录 1 复杂表达式的计算过程 2 if-else语句 2.1 基本结构及示例 2.2 if-else if 多分支 2.3 嵌套 if-else 2.4 悬空的 else 2.5 注意事项 2.5.1 if 后面不要加分号 2.5.2 省略 else 2.5.3 省略 {} 2.5.4 注意点 3 while 循环 3.1 一般形式 3.2 流程特点 3.3 注…

查看Windows中监听的端口及其关联的服务

文章目录 I 查看Windows中监听的端口及其关联的服务进程id1.1 列出了所有监听的端口及其关联的服务1.2 查找特定的端口是否开放1.3 查看哪些服务正在监听这些端口II 根据进程id查看进程名称基于cmd窗口,查看程序运行端口状态(关联服务进程id)和关联的服务进程信息 I 查看Win…

LLM大模型实战项目--基于Stable Diffusion的电商平台虚拟试衣

本文详细讲解LLM大模型实战项目&#xff0c;基于Stable Diffusion的电商平台虚拟试衣 一、项目介绍 二、阿里PAI平台介绍 三、阿里云注册及开通PAI 四、PAI_DSW环境搭建 五、SDLORA模型微调 一、项目介绍 AI虚拟试衣是一种创新的技术&#xff0c;利用人工智能和计算机视觉技…

MacBook电脑远程连接Linux系统的服务器方法

一、问题简介 Windows 操作系统的电脑可使用Xshell等功能强大的远程连接软件。通过连接软件&#xff0c;用户可以在一台电脑上访问并控制另一台远程计算机。这对于远程技术支持、远程办公等场景非常有用。但是MacBook电脑的macOS无法使用Xshell。 在Mac上远程连接到Windows服…

Golang | Leetcode Golang题解之第238题除自身以外数组的乘积

题目&#xff1a; 题解&#xff1a; func productExceptSelf(nums []int) []int {length : len(nums)// L 和 R 分别表示左右两侧的乘积列表L, R, answer : make([]int, length), make([]int, length), make([]int, length)// L[i] 为索引 i 左侧所有元素的乘积// 对于索引为 …

Java(二十二)---队列

文章目录 前言1.队列(Queue)的概念2.Queue的使用3.队列的模拟实现4.循环队列5.双端队列6.面试题[1. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/description/)[2. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/de…

django中日志模块logging的配置和使用

一、文件的配置 settings.py文件中添加LOGGING块的配置&#xff0c;配置如下 # 日志记录 LOGGING {"version": 1,"disable_existing_loggers": False, # 用于确定在应用新的日志配置时是否禁用之前配置的日志器# 格式器"formatters": {"v…

自动化测试中如何应对网页弹窗的挑战!

在自动化测试中&#xff0c;网页弹窗的出现常常成为测试流程中的一个难点。无论是警告框、确认框、提示框&#xff0c;还是更复杂的模态对话框&#xff0c;都可能中断测试脚本的正常执行&#xff0c;导致测试结果的不确定性。本文将探讨几种有效的方法来应对网页弹窗的挑战&…

Android 视频亮度图标

源码 import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View;import androidx.annotation.Nullable;public class VideoBrightness …

优雅的软件工程师

今天写算法的时候、通过两道题深深意识到了&#xff0c;什么是优雅的代码&#xff08;应该说不按套路出牌的代码&#xff09; 我被折服了 第一个就是141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; 判断换环状链表 我的思路就是用快慢指针判断&#xff0c;非常平平无…

SAP MR21 和 MR22 区别

MR21和MR22用来调整库存金额的话&#xff0c;两者之间有什么区别呢 一个是直接修改金额 一个是在原来的基础上进行加减。 MR21改的是单个物料的价格。 MR22改的是库存总价值。 MR**是不能改标准价格的&#xff0c;即使改了也到PRD去了&#xff0c;只能改移动平均价 MR21 : 商品…