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

2024-05-28 22:04

本文主要是介绍大数据开发面试题【数仓篇】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.chinasem.cn/article/1011810

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof