数据开发面经常见题整理-1

hot1-数仓为什么要分层,分哪些层
对数据仓库进行分层的主要原因包括提高数据处理效率、增强数据质量、增强可维护性、支持多维度分析和提高数据安全性等‌
ODS
ODS层:这是数据仓库的最底层,直接对接数据源系统,用来临时存储从业务系统抽取过来的原始数据,数据结构和粒度与源系统基本保持一致。其主要功能是作为数据进入数据仓库的缓冲区域,在这一层可以对数据进行简单的清洗和转换操作,比如去除明显的噪声数据、统一数据格式等,但不会进行复杂的数据处理。它为后续的数据处理提供了原始的数据基础,确保数据的完整性和准确性,方便在数据出现问题时进行追溯。
CDM
CDM层分为DWD明细层、DWS轻度汇总层和DIM维度层。
· 在DWD层中,需要将数据仓库ODS层的原样数据按照主题去建立相应的数据模型,对数据进行统一的清洗和一致性处理。
· 在DWS层,就会以分析对象为建模驱动,把DWD清理好的一些表进行跨关联,建立面向业务主题的大宽表模型,为应用层提供统一的计算口径和数据标准,提高效率。
· 在DIM层需要通过添加维度属性、关联维度等定义计算逻辑,完成属性定义的过程并建立一致的数据分析维度表。
ADS
在ADS层,根据业务需要来存放个性化的报表数据,可以直接为前端的报表提供查询和展现的服务。
hot2-spark中groupByKey和reduceByKey的区别
‌reduceByKey‌:这是一个转换操作,它对具有相同键的元素执行一个聚合函数(reduce函数)。具体而言,它按键将元素进行分组,然后对每个组内的值进行合并操作,通常包括对相同键的所有值进行某种累积、求和或其他聚合操作。例如,rdd.reduceByKey(lambda x,y: x + y)会将相同的键的值累加起来‌
‌groupByKey‌:这也是一个转换操作,但它根据键对RDD中的元素进行分组,但不执行任何聚合操作。它只是将具有相同键的元素放在一个组中,形成一个包含键和其对应值的迭代器。例如,rdd.groupByKey()会将相同的键的值放在一起,但不进行任何聚合操作‌
hot3-怎么划分事实表和维度表
事实表存储了度量值或数值型数据,这些数据通常是业务过程中的关键绩效指标(KPI),如,销售额、数量、成本等。每行数据通常代表一个业务过程,涉及很多用户行为
维度表提供了关于事实表中度量值的上下文信息。每个维度表代表一个分析角度,如时间、地理位置、产品类别等。
例如
销售金额属于事实表,因为代表了用户完成交易这个动作
而销售的产品,顾客信息,交易平台都是固定的,不涉及动作,就是维度表
hot4-维度建模有什么作用
个人理解是根据公司的业务流程,将业务相同,统计周期相同,统计粒度相同的不同度量值和不同的聚合逻辑整合起来,方便根据需要的指标对数据进行分析提高查询效率,过程中要保证数据的准确性和一致性。
在这里插入图片描述

hot5-HIVE优化方法
分桶-分桶可以显著减少全表扫描的时间,单查询特定的字段或者范围的时候,数据库只需要搜索相关的桶,而不是整个表,减少了IO流和cpu使用率;
分区- 通过在查询中指定分区条件,Hive 可以只读取相关分区的数据,而不是扫描整个表。
例如,如果表按照日期进行分区,查询特定日期范围内的数据时,只会读取对应日期分区的数据。
设置MapJoin(数据倾斜)-如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成join。容易发生数据倾斜。可以用MapJoin把小表全部加载到内存在map端进行join,避免reducer处理。
自定义分区(数据倾斜)-基于输出键的背景知识进行自定义分区。例如,如果map输出键的单词来源于一本书。其中大部分必然是省略词(stopword)。那么就可以将自定义分区将这部分省略词发送给固定的一部分reduce实例。而将其他的都发送给剩余的reduce实例。
hot6-简述一下MapReduce工作流程
假设一个待处理文件word.txt,要进行单词计数操作,首先客户端会获取待处理文件的信息,提交信息后yarn通过资源调度可以得到需要多少个map task,其输入的数据来自于HDFS的数据块,对每一个数据块进行切片操作,通过映射函数映射形成kv键值对,根据哈希运算的结果进行分区,确认每个输出的数据交给哪一个reduce task处理,将数据写入缓存区,缓冲区的大小有限,在一定条件下将缓冲区中的数据溢写到文件,数据在溢写文件中是分区且有序的,当数据全部处理完毕,将溢写文件进行归排序merge整合为一个文件,可以使用combiner合并减少整体网络开销,至此,map阶段结束
reduce task对于所有的map拉取数据,对不同分区的数据进行合并,排序,将相同key值的数据放到一起,期间也会形成溢写文件和归并操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值