在这里插入图片描述

1、ods是什么?

2、数据仓库dw

数据仓库层(dw),是数据仓库的主体.在这里,从 ods层中获得的数据按照主题建立各种数据模型。这一层和维度建模会有比较深的联系。

2.1、dwd明细层

明细层 (ods:Operational Data Storedwddata warehouse detail)

2.2、dwm 轻度汇总层( MID dwb data warehouse basis

2.3、dws主题层( dm data market dws data warehouse service

3、ads

数据产品层(ads),这一层是提供为数据产品使用结果数据。

主要是提供给数据产品和数据分析使用的数据,一般会存放ESMySQL系统中供线上系统使用,也可能会存在 Hive 或者 Druid中供数据分析数据挖掘使用。如我们经常说的报表数据,或者说那种大宽表,一般就放在这里

应用

在这里插入图片描述

4、数据来源

数据主要会有两个大的来源:

业务库,这里经常会使用 Sqoop 来抽取

我们业务库用的是databus来进行接收,处理kafka就好了。

实时方面,可以考虑用Canal 监听 MySQLBinlog实时接入即可。(有机会补一下这个canal)

埋点日志,线上系统会打入各种日志,这些日志一般以文件的形式保存,我们可以选择Flume 定时抽取,也可以用用 Spark Streaming 或者 Storm来实时接入,当然,Kafka也会是一个关键的角色。

还有使用filebeat收集日志,打到kafka然后处理日志

在这层,理应不是简单的数据接入,而是要考虑一定的数据清洗,比如异常字段的处理、字段命名规范化、时间字段的统一等,一般这些很容易会被忽略,但是却至关重要。特别是后期我们做各种特征自动生成的时候,会十分有用。

5、odsdw dim App

在这里插入图片描述

  • 每日定时任务型: 比如我们典型的日计算任务每天凌晨算前一天的数据,早上起来看报表。 这种任务经常使用 HiveSpark 或者生撸 MR程序来计算,最终结果写入 HiveHbaseMySQLEs或者 Redis 中。
  • 实时数据: 这部分主要是各种实时的系统使用,比如我们的实时推荐、实时用户画像,一般我们会用 Spark StreamingStorm或者 Flink 来计算,最后会落入 EsHbase 或者 Redis 中。

6、维表层dim

维表层主要包含两部分数据:

  • 高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。
  • 低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。 数据量可能是个位数或者几千几万。

7、层级的简单分层

见下图,对dwd层在进行加工的话,就是DWM层(MID层)(我们的数仓还是有很多dwm层的)。

在这里插入图片描述

dwsdwddimtmp的作用

  • dws 轻度汇总层,从ods层中对用户的行为做一个初步的汇总,抽象出来一些通用的维度时间ipid,并根据这些维度做一些统计值,比如用户每个时间段在不同登录ip购买的商品数等。这里做一层轻度的汇总会让计算更加的高效,在此基础上如果计算仅7天、30天、90天的行为的话会快很多。我们希望80%的业务都能通过我们的dws层计算,而不是ods
  • dwd 这一层主要解决一些数据质量问题和数据的完整度问题。比如用户的资料信息来自于很多不同表,而且经常出现延迟丢数据等问题,为了方便各个使用方更好的使用数据,我们可以在这一层做一个屏蔽。(汇总多个表)
  • dim 这一层比较单纯,举个例子就明白,比如国家代码和国家名、地理位置中文名、国旗图片信息就存在dim层中。
  • tmp 每一层的计算都会有很多临时表,专设一个DWTMP层来存储我们数据仓库的临时表。

8、主题

主题Subject是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。例如“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”。

9、dwsdwd的关系

9.1、dwsdwd 是并行而不是先后顺序?

答:dwsdwd是并行的,都是数据dw层。

9.2、那其实对于同一个数据,这两个过程串行

答:dws 会做汇总,dwdods 的粒度相同,但是这两层之间也没有依赖的关系。

9.3、 dws 里面的汇总没有经过数据质量和完整度的处理,或者单独做了这种质量相关的处理,为什么不在 dwd 之上再做汇总呢?我的疑问其实就是,dws的轻度汇总数据结果,有没有做数据质量的处理?

答:ods 直接到 dws 就好,没必要过dwd,我举个例子,你的浏览商品行为,我做一层轻度汇总,就直接放在 dws了。但是你的资料表,要从好多表凑成一份,我们从四五份个人资料表中凑出来了一份完整的资料表放在了 dwd 中。然后在 app 层,我们要出一张画像表,包含用户资料和用户近一年的行为,我们就直接从dwd中拿资料, 然后再在 dws 的基础上做一层统计,就成一个app表了。当然,这不是绝对,dwsdwd 有没有依赖关系主要看有没有这种需求。

10、ods dwd 区别,有了 ods 层后感觉 dwd 没有什么用了?

答: 嗯,我是这样理解的,站在一个理想的角度来讲,如果 ods 层的数据就非常规整,基本能满足我们绝大部分的需求,这当然是好的,这时候 dwd 层其实也没太大必要。 但是现实中接触的情况是 ods 层的数据很难保证质量,毕竟数据的来源多种多样,推送方也会有自己的推送逻辑,在这种情况下,我们就需要通过额外的一层 dwd来屏蔽一些底层的差异。

dwd 主要是对 ods 层做一些数据清洗和规范化的操作,dws 主要是对 ods 层数据做一些轻度的汇总。

11、app/ads层的作用

11.1、感觉数据集市层是不是没地方放了,各个业务的数据集市表是应该dwd 还是在 app

答: 主要就是明确一下数据集市层是干什么的,如果数据集市层放的就是一些可以供业务方使用的宽表表,放在 app 层就行。如果数据集市层是一个比较泛一点的概念,那么其实 dwsdwdapp 这些合起来都算是数据集市的内容

11.2、存到 RedisES 中的数据算是 app层吗?

答: 是的,因为app 层主要存放一些相对成熟的表,能供业务侧使用的。这些表可以在 Hive 中,也可以是从 Hive 导入 Redis 或者 ES 这种查询性能比较好的系统中。

12、图解分层

在这里插入图片描述

原文地址:https://blog.csdn.net/xdx_dili/article/details/134681995

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_4937.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注