数据仓库DW-理论知识储备

这篇具有很好参考价值的文章主要介绍了数据仓库DW-理论知识储备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据仓库DW

数据仓库具备 采集数据、存储数据、分析和计算 的功能,最后得出一些有用的数据,一些目标数据来使用。

采集来自不同源的数据,然后对这些数据进行分析和计算得出一些有用的指标,提供数据决策支持。

数据的来源有:系统的业务数据、用户的行为数据、爬虫数据等。

数据仓库包含:实时数据仓库、离线数据仓库。

数据仓库DW-理论知识储备,大数据,大数据

数仓分层

数据仓库中的数据一般经过以下几层处理,每层都对数据进行特定的处理:参考来自

其实这个分层只是主流是这样的,具体要分几层,怎么分,还是要根据自己的业务来,怎么分层好分析数据,就怎么分。

1.ODS
ODS主要完成:

(1)保持数据原貌不做任何修改,保留历史数据,储存起到备份数据作用,采集过来是什么数据就存储什么数据;

(2)数据一般采用lzo、Snappy、parquet等压缩格式;

(3)创建分区表,防止后续的全表扫描,减少集群资源访问数仓的压力,一般按天存储在数仓中。

2.DWD

DWD主要完成:

1. 数据清洗
(1)去除空值、脏数据、超过极限范围的数据。
(2)过滤核心字段无意义的数据,比如订单表中订单 id 为 null,支付表中支付 id 为空
(3)将用户行为宽表和业务表进行数据一致性处理

        清洗的手段包括Sql、mr、rdd、kettle、Python等等。清洗掉数据不能太多也不能很少。合理范围:1 万条数据清洗掉 1 条。

2. 脱敏
        对手机号(181****7089)、身份证号等敏感数据脱敏

3. 维度退化
        对业务数据传过来的表进行维度退化和降维。(商品一级二级三级、省市县、年月日)

4. 压缩

        LZO,列式存储 parquet

3.DWS

        以DWD为基础,进行轻度的汇总。预聚合。
        DWS层就是关于各个主题的加工和使用,这层是宽表聚合值,是各个事实表的聚合值。这里做轻度的汇总会让以后的计算更加的高效,如:统计各个主题对象计算7天、30天、90天的行为, 应对特殊需求(例如,购买行为,统计商品复购率)会快很多不必走ODS层反复拿数据做加工。     

        这层会把每个用户单日的行为聚合起来组成一张多列宽表,以便之后关联用户维度信息后进行,不同角度的统计分析。

        涉及的主题包括:访客主题、用户主题、商品主题、优惠券主题、活动主题、地区主题等

      

4.DWT
        这层涉及的主题和DWS层一样包括:访客主题、用户主题、商品主题、优惠券主题、活动主题、地区主题等。只不过DWS层的粒度是对当日用户汇总信息,而DWT层是对截止到当日、或者近7日、近30日等的汇总信息。

        以用户主题这个来举列:

*DWS层:用户主题层是记录某一个用户在某一天的汇总行为。

*DWT层:用户主题层是记录某一个用户截止在当日的汇总行为。

5.ADS

统计指标。
ADS层数据是专门给业务使用的数据层,这层是面向业务定制的应用数据层。

ADS主要完成:

(1)提供为数据产品使用的结果数据、指标等。

(2)提供给数据产品和数据分析使用的数据,一般会存放在 ES、MySQL等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。如报表数据,或者说那种大宽表。

        这个项目中ADS层也是包含有多个主题:设备主题、会员主题、商品主题、营销主题、地区主题、访客主题、用户主题、订单主题、优惠券主题、活动主题等等。每个主题都包含多个指标的计算。

离线数仓

通常是批处理数据,数据可能一直产生,也有可能断断续续的产生,但是这些数据我先攒着,攒成一批后再处理。一般攒一天处理一次,所以是批处理数据量大,处理时间长。

离线数仓架构参考图

数据仓库DW-理论知识储备,大数据,大数据

业务数据存储在MySQL,用户行为数据存储在日志文件中。这两个数据源都要先采集进来然后进行分析计算等,因为数据量会比较大,所以采用Hadoop的HDFS存储。

业务数据在MySQL中,由于是离线数仓,所以每天进行全量同步一次数据到HDFS中即可,这边我也不知道为啥还要进行增量同步到kafka中,然后由消费者发送给HDFS存储。

日志文件由flume监控采集,又因为日志文件比较大,如果flume采集完就直接发送给HDFS效率不好,所以flume采集完先发送给kafka的主题中,接着flume消费者订阅这个主题,消费日志文件发送给HDFS存储,kafka消息队列在这起消峰的作用。

经过上面的步骤后,数据就全部来到了HDFS中供使用。数据经过ODS、DWD、DWS、ADS层层处理产生想要的结果后,数据处理经过这些层,这些层总要有先后,定时任务调度的作用就是:如果数据在ODS处理好了,就可以自动进入到下一层DWD继续处理。层层处理后的想要结果由DataX将结果每日同步到MySQL中方便进行后续的使用,比如Superset可视化展示。

实时数仓

数据源源不断的来,和离线数仓相反,数据不攒了,一有数据来我就处理,数据跟流水一样来,所以是流式处理数据,处理时间较短。

实时数仓用来处理那些实时性高的数据。

实时数仓架构参考图

数据仓库DW-理论知识储备,大数据,大数据

实时的话,创建flink消费者从kafka中取出数据,那我就理解了为啥业务数据也要增量同步发给kafka了,因为实时处理需要,所以kafka就是ods层,flink进行简单处理后发送给DWD层。

flume采集文件案例

以下的架构就是一个实时数仓的简单架构,flume一直监控数据文件,只要一有文件来,就会被flume采集然后发给kafka主题,接着就会被flink消费。

数据仓库DW-理论知识储备,大数据,大数据

用户行为数据:用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。由于用户的行为数据比较多,所以用户行为数据通常存储在日志文件中。

数据仓库DW-理论知识储备,大数据,大数据 在flume的家目录中,采集一个job文件夹存放flume的配置文件,file_to_kafka.conf:

a1.sources = r1
a1.channels = c1

#配置source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /mydata/spoolingDir

#配置channel         org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = 192.168.10.128:9092
a1.channels.c1.kafka.topic = topic_log
a1.channels.c1.parseAsFlumeEvent = false

#组装 
a1.sources.r1.channels = c1

启动:

bin/flume-ng agent -n a1 -c conf/ -f job/file_to_kafka.conf -Dflume.root.logger=info,console
  • bin/flume-ng:这是启动 Flume 的可执行文件。
  • agent:指定要运行的 Flume 组件类型,这里是代理(agent)。
  • -n a1:指定代理的名称,这里是 "a1"。
  • -c conf/:指定配置文件的目录,Flume 会在该目录下查找配置文件。
  • -f job/file_to_kafka.conf:指定要使用的配置文件的路径,这是 Flume 的配置文件,它描述了数据传输的配置。
  • -Dflume.root.logger=info,console:设置 Flume 的日志级别和输出方式。在此设置中,日志级别为 "info",并将日志输出到控制台。

数仓技术选型

数据仓库DW-理论知识储备,大数据,大数据

数据采集:如果数据是以文件形式存在可以使用flume监控采集,MySQL中的数据可以使用DataX采集

数据存储:数据量比较小可以用MySQL存储,数据量大用HDFS

数据计算:实时性要求高用flink流式处理

ETL和ELT

数据仓库DW-理论知识储备,大数据,大数据文章来源地址https://www.toymoban.com/news/detail-725118.html

到了这里,关于数据仓库DW-理论知识储备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【物联网无线通信技术】UWB定位从理论到实现(DW1000)

    超宽带(UWB)是一种基于IEEE 802.15.4a和802.15.4z标准的无线电技术,可以非常精确地测量无线电信号的飞行时间,从而实现厘米级精度的距离/位置测量。UWB技术除了提供定位功能外,它本身是一种通信技术,其提供了一种安全的无线通信新方式,为新形式的安全交易打开了大门

    2024年02月14日
    浏览(41)
  • 数据仓库与数据建模理论

    数据仓库的特性: 面向主题 按主题分类 集成 将分散在各个数据库的数据集中到一起 稳定 非实时,一般只做查询 变化 记录历史,反映最近一段时间的变化 数仓分层的意义之一是1.问题定位简化,每层只处理一个简单的问题; 2.中间结果数据,增加复用,减少冗余 3.真实数

    2023年04月22日
    浏览(35)
  • 数据仓库之建模理论以及仓库设计思想

    数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策。同时,随着时间的推移,数据仓库中积累的大量历史数据对于数据科学家和业务分析师也是十

    2023年04月15日
    浏览(63)
  • 数据仓库设计理论

    1.1、数据仓库介绍 数据仓库是一个用于集成、存储和分析大量结构化和非结构化数据的中心化数据存储系统。它旨在支持企业的决策制定和业务分析活动。 1.2、基本特征 主题导向:数据仓库围绕特定的主题或业务领域进行建模和组织,例如销售、客户、供应链等。这种主题

    2024年02月16日
    浏览(34)
  • 数据仓库表设计理论

    数仓顾名思义是数据仓库,其数据来源大多来自于业务数据(例如:关系型数据库),当设计数仓中表类型时(拉链表、增量表、全量表、流水表、切片表)时,应先观察业务数据的特点再设计数仓表结构 首先业务数据是会不断增长的-即增量,而在不断增长的前提下业务数据又可以

    2024年02月16日
    浏览(37)
  • 数据仓库理论

    数据仓库(Data Warehouse,简称 数仓 、 DW ),是一种用于存储。分析、报告的数据系统,其目的是构建 面向分析 的集成化数据环境,分析结果为企业提供决策支持 数据集仓库 本身并不生产任何数据 ,其数据来源于不同外部系统。同时数据 仓库自身也不需要消费任何的数据 ,其

    2024年02月08日
    浏览(33)
  • 数据仓库基本理论Ⅰ

    数据仓库是一个面向主题的,集成性的,非易失性的,时变性的数据集合,用于管理决策。 数据仓库解决的问题: 为业务部门提供准确清晰的报表 为管理人员提供更强的分析能力 为数据挖掘和知识发现奠定基础 面向主题 数据仓库内的数据是 针对特定的业务主题 。数据仓

    2024年02月22日
    浏览(41)
  • 1.数据仓库基本理论

    概念 : 数据仓库是一个用于存储、分析、报告的数据系统 数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策 特点 : 数据仓库本身并不“生产”任何数据,其数据来源与不同外部系统 同时数据仓库自身不需要“消费”任何数据,其结果开放给各个

    2024年02月11日
    浏览(35)
  • 知识储备--基础算法篇-矩阵

    第一题上来就跪了,看了官方答案感觉不是很好理解,找了一个比较容易理解的。 还有一个暴力方法,其中有几个知识点, list的[]中有三个参数,用冒号分割 list[param1:param2:param3] param1,相当于start_index,可以为空,默认是0 param2,相当于end_index,可以为空,默认是list.size p

    2024年02月10日
    浏览(32)
  • 知识储备--基础算法篇-动态规划

    第一次接触动态规划,不知道具体什么意思,做了题才发现动态规划就是把大问题变成小问题,并解决了小问题重复计算的方法称为动态规划。比如上楼梯,一次上一阶或二阶,求有多少种算法,就可以拆成最后一阶的方法数等于前一阶的方法数加前两阶的方法数,这就是递

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包