数据仓库

162 阅读2分钟

一、面试模块

1.数仓为什么要分层?

1.清晰的数据结构:每一个数据都有对应的作用域,方便定位和理解。

2.数据血缘回溯:快速准确定位问题,清楚哪个数据集市或应用层的问题。

3.减少重复开发:规范数据分层,开发公共层、中间层数据,减少重复计算。

4.将复杂问题简单化:将一个复杂的任务分解为多个步骤,每一层只处理单个步骤。便于维护数据的准确性,当数据出现问题,不用修复所有的数据。

5.屏蔽原始数据的异常:真实的底层数据和统计数据解。

6.屏蔽业务的影响:不必改一次业务就需要重新接入数据。

2.生产中对实时数仓是如何做数据质量管理的,如果同一指标离线和实时计算结果不一致,该怎么处理?

在实时数仓中,主要关注4个指标:完整性、准确性、一致性、及时性。,并按n分钟粒度进行监控。

调度系统或者中台的数据质量管理系统:准实时的数据监控。

包括设置业务指标阈值、监控粒度的阈值(1min或5min)

完整性:ODS层数据标准化,在ETL代码中校验日志数据格式是否符合规范以及关键埋点是否存在,并实时的将结果写入DB中,一旦触发监控规则就进行报警。

准确性:指的是在ETL代码中校验日志关键埋点数据是否正确,并实时的将结果写入DB中,一旦触发规则就进行报警。

业务指标监控:订单数,平时都是500w,监控规则:当少于300w或大于800w时发出报警

常规指标:数据量/条数

一致性:指的是在ODS、DWD、DWS层按一分钟粒度计算各层topic读入量,过滤量,输出量。通过统计各分层的这三个值可以监控当前实时数仓在每一层流转过程中数据条数的差异,从而保障实时数仓的一致性;为了及时排查问题,将各层过滤的数据实时落地HIVE协助定位问题。

及时性:计算实时数仓各层flink程序的processingTime和数据EventTime的差值,通过差值来监控实时数仓的延迟率。