送5本数仓项目实战书籍!

点击上方 "大数据肌肉猿"关注, 星标一起成长

后台回复【加群】,进入高质量学习交流群

2021年大数据肌肉猿公众号奖励制度

文末送书

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库是为企业所有级别的决策制定过程,提供所有类型数据支持的资源合集。它出于分析性报告和决策支持的目的而创建。

随着技术的飞速发展,经过多年的数据积累,各互联网公司已保存了海量的原始和各种业务数据,所以数据仓库技术是各互联网公司目前最需要着重发展的技术领域。数据仓库是面向分析的集成化数据环境。通过对数据仓库中的数据进行分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。

 

《大数据分析——数据仓库项目实战》可以帮助完整搭建一套数据仓库,通过本书学习更深入地了解大数据行业,获得从0到1搭建数据仓库的全部技能点!

 

本书按照需求规划、需求实现、需求可视化的流程进行编排,遵循项目开发的实际流程,全面介绍了数据仓库的搭建过程。在整个数据仓库的搭建过程中,本书介绍了主要组件的安装部署过程、需求实现的具体思路、部分问题的解决方案等,并在其中穿插了许多与大数据和数据仓库相关的理论知识,包括大数据概论、数据仓库概论、电商业务概述、数据仓库理论准备、数据仓库建模等。

从逻辑上可以分为三部分:第一部分是大数据与数据仓库概论及项目需求描述,主要介绍了数据仓库的概念、应用场景和搭建需求;第二部分是项目部署的环境准备,介绍了如何从零开始搭建一个完整的数据仓库环境;第三部分是需求模块实现,针对不同需求分模块进行实现,是本书的重点部分。

 

针对大家阅读学习过程中,以及使用大数据、搭建数据仓库中出现的高频问题,本书作者还进行了答疑。

 

什么是大数据?为什么要建数据仓库,会有什么好处?

大数据通常指处理海量数据的存储和分析计算。由于传统的Java处理不了TB、PB级数据,所以诞生了大数据。大数据采用分布式存储,可以轻松搞定海量数据的存储问题。同时大数据具有分布式计算引擎,可以对海量数据进行分析。

双十一时,实时计算的千亿交易额就是大数据的一个简单应用,还有像你在京东上搜索了某款商品,当你在今日头条上浏览新闻时,就会推荐给你在京东上搜索的相关商品,其实背后都是大数据技术。

最近国家重点打造的雄安新区,它的交通规划、城市建设、政府办公等都采用了大数据技术。

为什么要建数据仓库,是因为现在的数据仓库都是采用分层来处理,每一层处理规定好的事情。比如第一层,备份;第二层,清洗;第三层,按天聚合的宽表;第四层,累积型宽表;第五层,统计指标。结构非常清晰,便于排查问题。同时也避免重复操作。

而传统的数据分析不分层,计算每一个指标时,都要经历,备份、清洗、聚合等重复操作。如果计算100个指标就重复计算了100次。

 

想要从零搭建一个数据仓库的架构应该怎么设计?

首先要根据需求去搭建数据仓库,在搭建之前了解清楚如下这些因素:

l 业务数据在哪,以什么格式存在;

l 用户行为数据在哪,以什么格式存在;

l 业务数据和用户行为数据大数据量是多少;

l 是只做离线数仓还是也需要兼顾实时;

l 是选择云主机还是物理机,预算是多少;

l 数据是永久保存,还是1年、2年定期退役旧数据;

l 项目组多少人;

l 项目周期是多少;

l 首批统计的指标多少,总共要统计的指标多少;

l 项目预算是多少;

l ……

这些问题都了解清楚后,开始技术选型;考虑技术的成熟度、考虑数据的格式、可靠性、兼容性等问题,最终确定数仓的整体架构。

 

一个基本的数据仓库都应该包含哪些功能模块呢?

应该包含数据采集模块、数仓分层、任务调度、数据可视化、即席查询、多维查询、权限管理、元数据管理、数据质量监控、集群性能监控等模块。

 

环境搭建过程中遇到问题一般要怎么解决?比如某个框架安装不成功。

正常情况,尚硅谷数据仓库的视频配套文档是非常细致的,复制粘贴就可以跑起来。按照视频手把手安装,失败的可能性很小。再者也可以多留意报错信息,查看文档,通过百度或谷歌搜索等,锻炼自己解决问题的能力。如果还不行,可以关注大数据那些事公众号,加群和里面的大佬进行技术交流。

 

用户行为数据的采集很重要吗?采集到的数据主要用来分析什么需求的?

用户行为数据很重要,分析该数据就能了解到用户的心理的想法,为后续推荐产品,有非常大的作用。比如,A老师每次来到某东的海狗人参商品的详情页,都会停留很长时间。根据这个用户行为数据,就能推测出A老师对该产品非常感兴趣,后续推荐商品时,可以作为重点推荐对象。

 

数仓建模具体指的是什么?为什么如此重要?

数仓建模可以说是数仓仓库的灵魂。评价一个数仓的好坏,全靠建模。咱们尚大很多学子都是凭借着数仓建模走进BAT等一线大厂。

数仓建模要从存储在Java后台的MySQL数据库说起。

 

第一步,先MySQL中的表导入到EZDML或者PowerDeginer等建模工具中。然后,根据表与表的关系,通过外键连接在一起。

 

第二步,开始每一层的建模。

第一层ODS,做三件事:

保持数据原貌,不做任何修改 起到数据备份的作用;

创建分区表,防止后续全表扫描;

采用压缩,减少磁盘的存储空间。

 

第二层DWD,采用标准的建模四步:

选择业务过程;

声明粒度;

确定维度;

确定事实。

 

中小公司选择业务时,如果业务表非常少,比如50张表以内,可以考虑全都选择。大型公司业务表非常多,达到几千张表,那这个时候,一定要根据最终要统计的指标需要的表进行选择。

 

声明粒度:

何为粒度呢,主要指:一行信息代表的含义。比如一行信息代表:一次下单,粒度就是一次;一天下单,粒度就是天;一个月下单,粒度就是月;如果粒度是月,那么后续想统计天相关的指标就统计不了了。所以在选择粒度时,最好是选择最小粒度。怎么做到呢?保持数据原样,不做聚合操作即可。

 

确定维度:

就是什么时间、什么地点、哪个人、哪个商品、活动、优惠劵 等名词。

 

确定事实:

这里指的是确定度量值。所谓的度量值,通常指,次数、件数、个数、金额等。

 

最后,根据确定的维度和事实,进行维度退化。

比如将:商品表、商品SPU表、品类表、商品一级分类、二级分类、商品三级分类退化成商品维度表;将省份表、地区表退化为地区维度表。

 

第三层DWS:每天聚合的宽表。

这一层就解决两个问题:第一个问题有哪些宽表、第二个问题每个宽表的字段怎么来。

 

宽表:

站在维度的角度去看事实,也就是宽表是以维度为中心。有多少维度就可以创建多少宽表;

宽表的字段怎么来:

站在维度的角度去看事实,主要看事实表的度量值。

 

比如用户行为宽表:

我们站在用户维度的角度,可以看到该表周围有8张事实表,(订单表、订单详情表、支付表、加入购物车表、评论、收藏、领优惠劵、退单表)那么该宽表的字段就是,下单的次数、下单金额、订单详情的次数、订单详情的金额、支付次数、支付金额、加入购物车次数、加入购物车金额、评论次数、收藏次数、领优惠劵次数、领优惠劵金额、退单次数、退单金额。

 

第四层DWT:累积型宽表

这一层和上一次DWS类似,也是解决两个问题。哪些宽表、宽表字段怎么来。

 

宽表:

站在维度的角度去看事实,以宽表的维度为中心。

宽表的字段有些区别:

站在维度的角度去看事实,主要关注事实表业务的开始时间、结束时间、度量值从开始到结束的累积值、以及最近一段时间的累积值。

 

例如用户主题宽表:统计用户首次下单时间、末次下单时间、从开始下单到末次下单一共下单多少次、下单金额是多少;最近一个月下单的次数和下单的金额。

 

最后一层ADS层,主要是统计指标了。一般中小公司要统计100-200个左右。

 

所有企业的分层都相同吗?构建一个数仓应该根据什么来决定如何分层?

每家公司的分层还是有区别的,主要是根据公司业务的复杂度。

比如,阿里的话,是采用四层,ods->dwd->dws->ads。咱们数仓1.0时也是采用这种分层。

到了数仓2.0、3.0咱们参考了美团的数仓分层,增加了一个DWT层,累积型宽表。出发点主要是为了方便统计累积型指标。增加一层,在写hql时逻辑非常简单。

京东个别部门,数仓采用9层。因为业务实在太复杂了。

目前市场上分4层、5层的公司多一些。

 

Flume-Kafka-Flume架构是万能的吗?它的优势和不足是什么?

这套结构是非常经典的采集架构,其中的kafka起到了数据削峰的作用;同时还可以兼顾流批一体。离线数仓和实时分析均可以从kafka获取数据。、

 

数仓的搭建中一般都使用什么计算引擎?除了Tez还有别的选择吗?

计算引擎通常有mr、Tez、Spark SQL,mr引擎计算效率低,执行周期长。Tez引擎是数仓2.0中使用的,是hive的高级引擎。数仓3.0已更新为SparkSQL引擎。

 

在企业项目中,哪一个即席查询的框架应用较多?怎样进行选型?

书中给了三种即席查询框架:presto、kylin、druid。

l 如果从即系查询角度、presto和kylin相对来说多一些。

l 如果是多种数据源,比如数据在kakfa、redis、mysql等多种数据源头,可以考虑用presto。

l 如果是统计的维度非常多,可以考虑kylin。比如:什么时间、什么地方、销售商品的top10。

 

Azkaban自动化调度,执行过程中出错了怎么办?应该采取什么措施?

Azkaban作为调度任务的框架,如果里面的任务挂掉。咱们可以配置邮件报警和电话报警。半夜给你打电话,系统会提示哪个任务挂了,尽快进行处理。

 

Flume的拦截器是做什么用的?还有其他地方应用吗?

Flume拦截器可以进行简单的ETL清洗,清洗掉一些不符合要求的数据。

还可以解决零点漂移问题。比如第二级flume,也就是消费kafka的这个flume,会把数据写入到hdfs,默认写入是按照服务器系统时间。就会出现,日志是23点59分产生的,等传输到flume时,系统时间已经变成第二天0:05分钟了,该数据会被发往第二天的分区。

我们可以采用flume拦截器,将默认获取服务器系统时间,修改为按照日志产生的时间。这样这条日志就会发往改天指定的分区。

 

实际项目中需要自定义函数的场景很多吗?都什么时候需要自定义函数?

如果用户行为日志设计的json格式非常复杂,就需要用到自定义函数进行解析。比如用自定义UDF函数解析公共字段、自定义UDTF解析事件字段等。

 

项目中遇到了这么多的框架,运行过程中其中一个挂掉了怎么办?

像Flume、Kafka、Hadoop等组件在开发时难免会遇到挂的时候,那挂了也不用太担心。像Hadoop都是高可用,还有三个副本。其他组件挂掉都有集群监控zabbix。正常启动集群即可。

 

数据治理是什么?咱们这本书中有这方面的技术吗?

数据治理通常包括:元数据管理、数据质量监控、权限管理等功能。《大数据分析——数据仓库项目实战》中给大家提供了用Atlas技术实现元数据管理功能。像数据质量监控,权限管理,我们电商数仓3.0中给大家提供全套解决方案。

 

书中分析的指标涵盖电商所有分析指标吗?陌生复杂的指标怎么去分析?

咱们书中分析的指标已经非常多了,但是仍然不可能覆盖市面上所有的指标分析。大家在学习过程中,重在学习分析指标的方法。

遇到复杂的指标,尽量划分步骤,采用子查询的方法,把复杂问题简单化处理。

 

根据什么设计的同步策略?

同步策略:分为全量、特殊、新增、新增和变化

采用什么同步策略主要是根据数据量:数据量比较小,直接都全量就可以。

地区表这种几乎不变化或者变化非常小的就同步一次,以后有变化了,再导一次即可。

新增:通常是数据量非常大,且每张表的数据不会发生变化。

新增和变化:通常也是数据量非常大,且每张表里面的数据还变化。

 

 

《大数据分析——数据仓库项目实战》具有以下四个特点:

细:全流程讲解数据仓库搭建,手把手带你搭建大数据分析处理平台,架构思维贯穿全书始终,从服务器选型到需求实现的思路讲解、框架安装、工具使用、内核介绍,内容无所不包,技术点覆盖全面。

真:企业真实数据仓库项目为基础,真实项目背景、真实需求实现、真实架构搭建、真实数据分析,数据抽取、数据分析、数据大屏、即席查询、元数据管理,让你拥有真实的项目开发体验,狂涨经验值。

全:随书附赠46小时配套视频、整套项目的业务指标近100个、Shell脚本40多个、用户行为原始表11张,业务原始表24张、数仓总表近100张!

新:最新数据仓库架构全景呈现,Superset、Kylin、Druid、Presto、Atlas等前沿技术打包讲解,不落人后紧跟技术潮流。

来源:尚硅谷IT教育

点击上方连接即可购买

粉丝福利

留言谈谈你为什么需要这本书,留言走心的5名读者可获赠正版图书 ---大数据分析——数据仓库项目实战图书一本。

--end--

扫描下方二维码

添加好友,备注【交流】
可私聊交流,也可进资源丰富学习群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值