数据仓库概念
(1)公司搭建数仓的目的
- 存储公司的数据,通过对这些数据进行提炼和分析,来为企业制定决策
- 可以帮助企业,改进业务流程、提高产品质量等
- 简而言之,就是为公司的战略做数据支撑
(2)数仓的主要工作
- 存储
存储公司海量数据 - 计算
就是SQL - 分析
通过对数据清洗、计算,最后形成报表,给老板看
(3)数仓的数据来源
(3.1) 业务数据
就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中
(3.2)用户行为数据
用户在使用产品过程中,通过前端埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中
这些日志可以解析成各种信息;
(3.3) 爬虫数据
通常事通过技术手段获取其他公司网站的数据,不建议同学们这样去做
(4)数仓的数据流程
业务数据和行为数据是如何进入数据仓库的?
(1)行为数据
Flume框架,将数据从日志文件采集到HDFS
Flume使用广泛、开源免费
(2)业务数据
业务数据存储在Mysql
Hadoop可以自定义InputFormat读取Mysql数据
Sqoop其实就是MR程序
数据在数仓中的加工流程?
(1)ODS层:数据备份;
(2)DWD层:数据清洗;
(3)DWS层:宽表层;按天、主题join形成宽表
(4)DWT层:宽表层;累计宽表 累计数据
(5)ADS层:报表层;形成最终的结果 给老板看的数据都在这里;
-
可以即将ADS层的结果存储在Mysql中,但是老板不懂Mysql,因此我们需要从Mysql读取数据,写到报表系统中,进行可视化;
-
也可以写到用户画像系统,给用户打标签,标签其实就是一个对象原本没有的属性,通过分析后,对用户打标签,比如:这是高手,这是喷子,这是托儿索; 打标签对后续的推荐系统做基础,可以对用户根据标签进行分群,推荐东西;
用户画像分为三个等级:统计类标签、规则类标签、机器学习类标签;
前两个通过HQL语句获取是没问题的;
机器学习类标签就需要更牛逼的实力了; -
推荐系统就需要构建学习模型等;
-
机器学习
上述的这些系统都是基于大数据才能实践的;
任务调度
Azkaban/Oozie/AirFlow/DS等工具
(5)数据源演示
(6)数仓学习重点
1.从哪来的问题
(1)有哪些数据
(2)数据是如何进入数仓的
(3)数据长什么样?
2.如何对数据进行加工处理?
3.数据处理完后写到哪里去?给谁用?未来能够帮助我们解决什么样的问题?