大数据开发面试题【数仓篇】

197、数据仓库和传统数据库区别

由于历史数据使用频率过低,导致数据堆积,查询性能下降;用于查询分析,涉及大量的历史数据,数据仓库中的数据一般来日志文件和事务
数据库是跟业务挂钩的,数据库不可能装下一个公司所有的数据,因此数据库的是个设计通常只针对一个应用而设计的;数据仓库是依照分析需求、分析维度、分析指标进行设计的
数据库的操作一般是OLTP:是针对具体的业务在数据库中的联机操作;数据仓库的操作一般是OLAP,是针对某些主题的里哦是数据进行分析,支持管理决策
数据库中主要存放的是一些在线的数据,数仓中主要存放的是历史数据,并且存放的数据要比数据库多
数据库中主要用于处理业务,数仓中主要用于数据分析
数据库的设计就是避免冗余,数仓中会专门引入冗余,减少后面进行的大量的join操作
补充:数仓是什么
数仓是一个面向主题的、集成的(来自不同的数据源)、非易失(一般不会进行删除和修改)并且随时间变化(数据不会变,而是数据随着时间会不断增多)的数据集合,主要用于存储历史数据,然后通过分析整理进而提供数据支持和辅助决策

198、数仓为什么要分层

在管理数据的时候,能对数据有一个更加清晰的掌控
优点:清晰的数据结构;数据血缘追踪;减少重复开发;把复杂的问题简单化;屏蔽原始数据的异常影响
ODS:原始数据层,直接接入业务库、埋点日志、消息队列等,是数仓的准备区
DWD:数据细节层,业务层和数据仓库层的隔离层,保持和ODS层相同颗粒度,进行数据清洗和规范化操作,去空、脏数据
DWM:数据中间层:在DWD基础之上进行轻微的聚合操作,计算出相应的统计指标,聚合结果会生成中间表
DWS:数据服务层:在DWM基础上,整合汇总成一个主题的数据服务层,汇总结果是宽表
ADS:数据应用层:供数据分析和挖掘使用,用于报表

199、数仓建模常用模型吗?区别、优缺点?

三范式建模(immon):在数据仓库的逻辑需要从业务系统的数据模型中的逻辑模型中抽象实体,实体的属性,实体的子类,实体的关系等
范式建模最大的优点是从关系型数据库的角度出发,结合了业务系统的数据模型,能够实现数据仓库的建模;但是这种方法只是限定在关系型数据库之上,限制了整个数据仓库模型的灵活性
维度建模(Kimball):按照事实表、维度表来构建数据仓库、数据集市,星型模型应运而生
维度建模步骤:
1、选择业务过程
2、声明粒度:在同一张事实表中,必须具有相同的粒度,不同的粒度数据建立不同的事实表,一般从最细的粒度开始设计,
3、确认维度:维度表是业务分析的入口,维度表中不能出现重复数据,应该使主键唯一
4、确认事实:事实表是用来度量的,事实表中每一行对应一个度量,每行中的数据是一个特定级别的细节数据;维度建模的核心原则之一就是同一事实表的所有度量必须具有相同粒度

补充:星型模型和雪花模型

雪花模型去除了冗余,设计复杂,可读性差,关联的维表很多,查询效率很低,但扩展性好;多个维表没有和事实表直接相连,而是通过其他的维度表,间接的连接在事实表上,
星型模型冗余度高,设计简单,可读性高,关联的维表很少,查询效率高,可扩展性低;当所有的维表都是和事实表直接相连的时候,整个图形看上去就是一个星星,不存在渐变维度,所以一定有数据冗余,不需要和外表进行关联进行查询和分析,因此效率高
区别:
星型模型和雪花模型最根本的区别就是维度表是直接连接到事实表还是其他维表上
星型模型的数据冗余所以很多查询统计不需要做外部连接
雪花模型遵从三范式,去掉了冗余,有些统计过程需要通过表才可以产生

补充:数仓具体实施步骤

1、进行业务调研:需要了解业务系统,收集分析师运营人员对数据或者报表的需求
2、数据域划分:数据域是指面向业务分析,将业务过程或者维度进行抽象的集合
3、构建总线矩阵:明确业务过程所属的数据域,明确业务过程域与维度的关系
4、规范定义:定义指标(原子指标、派生指标)
5、明细模型设计:包括DIM和DWD
6、汇总模型设计:DWS和ADS
7、代码开发和运维监控

200、维度表和事实表的区别?

维度表是对数据进行分析时候所用的一个量
事实表:是数据聚合后依据某个维度生成的结果表,是具体的统计表
举例:销售统计表一个事实表;价格表和销量表是一个维度表
事实表用来存储事实的度量以及指向各个维的外键值,维表用来保存该维的元数据

补充:缓慢变化维

一些维度表的数据不是静态的,而是会随着事件而缓慢变化
SCD的解决方案:
拉链表:数据仓库系统的目标之一就是正确地表示历史记录,典型代表就是拉链表,保留历史的数据,并插入新的数据
拉链表不存储冗余的数据,只有某行的数据发生变化,才需要保存下来,相比每次全量同步会节省很多空间

201、OLTP和OLAP

oltp:联机事务处理,是传统的关系型数据库的主要应用,是基本的、日常的事务处理
olap:是联机分析处理,强调数据分析,数据一般来自数仓,用于数据挖掘、BI、复杂计算以及财务分析

202、增量表、全量表和拉链表

增量表记录根本更新周期内的新增的数据,在原表的基础之上新增本周期产生的数据
全量表:记录更新周期内的全量数据,
拉链表:记录数据的历史数据,记录数据从开始一致到当前辩护的所有信息,一般有结束之间和开始时间,如果发生变化,就修改当前数据䣌结束时间

203、数据同样存在 hdfs,为什么 hbase 支持在线查询

1)HBase的存储机制:首先,HBase的机制是数据先写入到内存中,当数据量达到一定的量, 再写入磁盘中, 在内存中,是不进行数据的更新或合并操作的,只增加数据,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。
其次,在内存中的数据是有序的,如果内存空间满了,会刷写到HFile中,而在HFile中保存的内容也是有序的。HFile文件为磁盘顺序读取做了优化,按页存储。是顺序写入而不是随机写入,所以速度很稳定,这样保持稳定的同时,加快了速度。
2)HBase底层架构:HBase底层是LSM-Tree+ HTable(Region分区) + Cache——客户端可以直接定位到要查数据所在的HRegion Server服务器,然后直接在服务器的一个Region上查找要匹配的数据,并且这些数据部分是经过Cache缓存的。
3)HBase的读取读取速度快是因为它使用了LSM树型结构。磁盘的顺序读取速度很快。HBase的存储结构导致它需要磁盘寻道时间在可预测范围内,而关系型数据库,即使有索引,也无法确定磁盘寻道次数。而且,HBase读取首先会在缓存中查找,它采用了LRU(最近最少使用算法),如果缓存中没找到,会从内存中的MemStore中查找,只有这两个地方都找不到时,才会加载HFile中的内容,而我们也提到读取HFile速度会很快,因为节省了寻道开销。
(3) 问题扩展HBase的概念和特点可做扩展回答,再根据特点去回答优劣和核心功能,再延伸到适用场景。

  1. HBase概念:HBase是建立在HDFS之上,提供高可靠性的列存储,实时读写的数据库系统。它介于Nosql和关系型数据库之间,仅通过主键和主键的Range来检索数据,仅支持单行事务。主要用来存储非结构化和半结构化的松散数据。
  2. HBase的优缺点:优点:高容错性,高扩展性。key/value存储方式面对海量数据也不会导致查询性能下降。相对于传统行式数据库,在单张表字段很多的时候,可以将相同的列存到不同的服务实例上,分散负载压力。缺点:架构设计复杂,且使用HDFS作为分布式存储,所以在存储少量数据时,它也不会很快。HBase不支持表关联操作,数据分析是HBase的弱项。HBase只部分支持ACID,只支持单行单次操作的事务。
    (4) 综合项目中使用清楚HBase和其他数据库的区别,清楚HBase优势劣势,在哪种场景下,使用哪种技术,当所存储数据需要快速插入查询时,使用HBase,所以Storm或Sparksteaming常常存储入HBase。当数据需要大量聚合运算,计算分析结果时,使用Hive存储,所以Hive是数仓,etl的常用工具。

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

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

相关文章

教育新篇章:AI工具Sora引领学习新趋势

Sora——这个让人在24年初引爆AI圈的新产品,它究竟会如何改变我们的教育领域呢? 从gpt到Sora,从对话型的ai到游戏和短剧制作的新风口,我们从23年到24年一个接一个地被震惊! Sora能够根据文本提示生成高质量的视频内容…

当 GIS 遇上 AI 大模型

今年整个 IT 界、甚至科技界最火爆的技术就是 AI 大模型了,没有之一。 以 OpenAI 的 GPT 为代表、国内外一众大模型跟进,形成了百模齐奔的态势。围绕着大模型,各项周边的应用也在快速发展。在 2023 年年底的云栖大会上,论坛标题带…

LVM部署手册

目录 前言 一、LVM的基本概念 二、LVM的特点 三、LVM的应用场景 四、总结 资源列表 一、基础环境 关闭防火墙 关闭内核安全机制 设置主机名 二、磁盘分区 使用fdisk命令将磁盘划分为三个主分区 将这三个分区ID标记好修改为”8e“ 三、创建物理卷 创建物理卷 查…

Vue3(TypeScript)-CSSProperties代码示例及用法详解

Vue3-CSSProperties代码示例及用法 在Vue3中封装一个可复用的公共CSSProperties // 目录 /xxx/src/hooks/use-scroll-updown-bottom-content/index.ts 全局定义hooks import { computed } from vue import type { CSSProperties } from vuetype UpDownOperationType up | down…

一个基于预训练的DenseNet121模型的人脸年龄分类系统

这篇文章采用预训练的DenseNet121模型并使用自定义的数据集类和自定义的类似正态分布的标签平滑策略来训练了一个人脸年龄分类模型,最后基于这个模型用tk实现了一个娱乐向的小系统。 数据集展示: 两个文件夹,分别是训练集和测试集&#xff0…

Bootstrap 3.x 版本基础引入指南

Bootstrap 是一款广受欢迎的前端框架,它简化了网页设计与开发流程,帮助开发者快速创建响应式布局和美观的网页界面。本文将向您介绍如何在项目中引入 Bootstrap 3.x 版本的基本步骤,包括 CSS 和 JavaScript 文件的引用,以及必要的…

java根据不同类型跳转相应的实现类

1 不同实现类字典 AllArgsConstructor Getter public enum SendMessageEnum {HUAWEI("AndHWPush"),JIGUANG("AndJPush"),MEIZU("AndMZPush"),OPPO("AndOppoPush"),XIAOMI("AndXMPush"),XINGE("AndXinGePush"),;p…

Java跨Docker容器备份数据库数据

Java跨Docker容器备份数据库数据 前置背景思路整理编写备份脚本容器启动检验效果Java容器MySQL容器 Java代码执行备份 我的个人博客:Lichg,欢迎大家访问。 前置背景 在我们的开发部署场景中,通常多数使用Docker进行部署。当你的数据库和项目…

【吊打面试官系列】Java高并发篇 - 什么是乐观锁和悲观锁?

大家好,我是锋哥。今天分享关于 【什么是乐观锁和悲观锁?】面试题,希望对大家有帮助; 什么是乐观锁和悲观锁? 1、乐观锁: 就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态, 乐观锁认为竞争…

ICML 2024 多视角融合驱动的通用具身操作算法SAM-E,为机器人学习复杂操作给出了可行解决方案

当我们拿起一个机械手表时,从正面会看到表盘和指针,从侧面会看到表冠和表链,打开手表背面会看到复杂的齿轮和机芯。每个视角都提供了不同的信息,将这些信息综合起来才能理解操作对象的整体三维。 想让机器人在现实生活中学会执行…

【2024上半年软考】软件设计师答案

软件设计师 群策群力 仅供参考 ①数据库权限应该选revoke ②工作在数据链路层的设备是交换机 ③结构化思维:自上而下分解 ④链表需要遍历的是删除最后一个元素 ⑤磁盘是辅存 ⑥瀑布模型不够灵活 ⑦软件测试路径覆盖程度最高 ⑧29个数字最多查找5次的是有序数组进行二…

nuxt2移动端适配,处理移动端引入的组件库大小不正常显示

版本 "postcss-pxtorem": "^5.1.1" "nuxt": "^2.14.7"安装 npm i -D postcss-pxtorem5.1.1postcss.config.js 排除组件库适配,解决组件库大小在页面不正常显示 const pxToRem require(postcss-pxtorem) module.exports …

AI小天才:让你轻松掌握机器学习之K近邻

课程链接:AI小天才:让你轻松掌握机器学习 K近邻(K-Nearest Neighbors,简称KNN)算法是一种常用的监督学习算法,用于分类和回归任务。KNN算法的基本原理是通过找出与新样本最近的K个训练样本,并根…

【stm32】江科协听课笔记

[3-1] GPIO输出_哔哩哔哩_bilibili 5.GPIO输出 这里,寄存器就是一段特殊的存储器,内核可以通过APB2总线队寄存器进行读写,这样就可以完成输出/读取电平的功能。寄存器的每一位对应一个引脚,stm32是32位的,这里的寄存器…

【工具】珍藏免费宝藏工具,不好用你来捶我

前言 🍊缘由 藏在我硬盘里的好东西,必须跟小伙伴们分享 东西很好,必须分享。良辰吉日,跟大家分享几款神仙级小工具,实际亲测,不好来锤。 正文 一.影刀 影刀可以使任何操作系统、桌面软件、Web程序的自动…

怎么搭建微信留言板功能

在信息爆炸的时代,微信已经成为了我们日常生活中不可或缺的一部分。它不仅仅是一个简单的聊天工具,更是一个充满无限可能的营销平台。今天,我要向大家介绍的是如何在你的微信平台上搭建一个独具特色的留言板功能,让用户能够自由发…

PyTorch的数据处理

💥今天看一下 PyTorch数据通常的处理方法~ 一般我们会将dataset用来封装自己的数据集,dataloader用于读取数据 Dataset格式说明 💬dataset定义了这个数据集的总长度,以及会返回哪些参数,模板: from tor…

ubuntu部署gitblit

在Ubuntu上部署Gitblit可以通过以下步骤进行: 安装Java环境: Gitblit需要Java运行环境,可以通过OpenJDK进行安装。 sudo apt update sudo apt install openjdk-11-jdk下载Gitblit: 从Gitblit官方网站下载最新的Gitblit WAR文件…

51-54 Sora能制作动作大片还需要一段时间 | DrivingGaussian:周围动态自动驾驶场景的复合高斯飞溅

24年3月,北大、谷歌和加州大学共同发布了DrivingGaussian: Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes。视图合成和可控模拟可以生成自动驾驶的极端场景Corner Case,这些安全关键情况有助于以更低成本验证和增强自…

《最新出炉》系列入门篇-Python+Playwright自动化测试-42-强大的可视化追踪利器Trace Viewer

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 在我们日常执行自动化测试工作的过程中,经常会遇到一些偶发性的bug,但是因为bug是偶发性的,我们不一定每次执行都能复现,所以我…