00:02
那刚刚啊,我们说在我们的大数据平台当中,数据一共分为这么三类,用户行为数据,业务数据,以及爬虫数据啊爬虫数据你看我们不做啊,给他剔除了,那接下来我们看一看什么了啊,我们看一看我们的数据仓库的这么一个总体的流程啊,应该是什么样的,好,我先把这个PPT打开,打开PPT,然后呢,我们把这个打开。啊,接下来看一看啊,那这上面呢,有一个数仓的概念,哎,前面呢,我们也说了输仓啊,它是为了企业定制角色,提供数据支持的这么一个战略聚合,诶,然后帮助我们企业改进这个业务流程,提高产品质量,所以说数据啊,它的价值还是非常非常高的,那现在有这么一句话叫做得数据者得天下嘛啊哎。啊,那首先我们的数据分类一共有这么三类,用户行为数据、业务数据以及爬虫数据,那爬虫数据刚刚我们也说了,这个不做,那对于我们来说,我们要这个采集存储的就是用户行为数据和业务数据了,那用户行为数据我们说它是存储在文件当中的呀,业务数据我们也知道了,它是存储在my circleql当中的,那接下来我就要把这两类的数据给它采集到哪啊?哎,给采集到HDFS好了,那现在让你们来做,我们如何把文件当中的数据给它采集到HDFS呢?好,这个过程相信你们都会啊,用flu来做,哎,这个可以用来做,那业务数据呢,它是存储在my circleql的呀,哎,那他怎么能给它采集到HDFS呢?
01:51
那我们先想一想用能不能呢?啊,首先我们没有学过这个my circle source吧,默认的情况下它肯定是不能做这个事的,诶,但是有一个自定义source啊,自定义source我们是不是可以自定义一个买circle s,哎,那其实我硬要用来做这个事能不能啊,是不是也能啊,我们用这个自定义的source,那一直读取监控买circlel的这个数据库的变化吗?那我发现你这里有数据变化了,我就给你监控出来啊,那其实呢,一般我们不会用浮助来做这些事儿,哎,它不太合适,那除了这个之外,我们还可以怎么做呀?是不是可以用一个Java程序啊?哎,通过一个Java程序啊,左边用MYSQL的JDBC啊,读取MYSQL数据库表示数据,那右边呢?
02:42
我开启一个HDFS的客户端啊,Hdfs client,我一条一条的给你put上去就完事了呗,Put到HDFS,哎,通过一个Java程序啊,就可以来做这个事儿。那你说我们自己写的这个东西,它的性能能好吗?啊,我们自己写的这个东西,它的性能一定不会好的啊,为什么呢?首先我们自己写出来的这个bug,我们都不一定能保证它这个有没有啊,那其次性能的事儿我们就更不用多说了,它的性能呢,不会好,那有没有这么一些组件,它能帮我们把my circle的数据上传到HDFS呢?也就是我们的数仓当中呢,其实是有的,你看这个用户行为数据用flow,那业务数据我们用啥呀?业务数据我们可以用date叉啊来做这个事儿。
03:36
Data叉啊,它就可以同步买circle的数据到HDFS上,也就是我们所说的数据仓库啊,那数据仓库我们不就是用HDFS啊来做的存储吗?好了啊,那现在我们知道了用户行为数据的采集和业务数据的采集,我们可以用诶这两个工具来做呀,一个是一个是data叉,那我们学完了啊,这个学完了,但是这个叉我们还没有学呀,那有同学说你这个东西没学我也不会呀,哎,没事儿啊,没学也没事儿,那我们来这个上硅谷的目的是为了干嘛呀,来上硅谷的目的不就是为了学习的嘛,啊那用到这个data叉的时候,诶也会呢,教给大家啊,我们也会一行一行代码,然后一个一个配置的教大家来使用,OK,数据我们现在已经上传到HDFS了,那上传到HDFS之后,那我们就直接拿着这个数据来做。
04:37
做这个计算吗?哎,存储进来我们就直接来做计算吗?啊,肯定是不能的,不能直接计算,那为什么不能直接计算我们的数据仓库啊,你说我需不需要考虑到这个数仓的性能啊?哎,因为我把所有的数据我都拿过来了,放到这么一大坨了啊,数据呢,放到这么一大坨了,那放过来之后我直接计算,你说它的性能能好吗?哎,它肯定不能好,那具体为什么不能好啊,我们一点一点往下看好,那在我们的数仓当中呢,我们会给它进行分层啊,那这个分层我们之前也说了数仓,哎,我不管啊,我们的数仓分为两类,一类叫做离线数仓啊,另外一类呢,叫做实时数仓,好,那不管是离线数仓还是实时数仓,我们呢,都有这么四个分层,第一个叫做ODS第二个DWD第三个DWS,第四个ADS啊。
05:37
实时数仓和离线数仓,它都有这么一个分层。OK,那这个分层它有什么用呢?啊好,那首先我们先说这个ods。哎,那这个ods层啊,说到ods层我就想起来,哎,咱们之前有一个学员,他干了这么一个事儿,来到这个公司之后,他呀,这个领导说你呢,先把这个功能给我实现了,哎,你先把这个circle给我写了啊,那这个同学好家伙,他写了这么一个circle,叫做insert。
06:11
Over right o啊,哎,这个circle候我相信你们也都会写吧,哎,这个circle你们应该也都会写啊,大家应该在have的时候练习过很多遍了,那这个circle它有什么作用呢?Insert是插入,那over right呢是覆盖写啊,那执行这个语句的意思就是我之前这张表的数据,假设有这么多数据,那接下来我执行一个这个S据,我插入了多少条数据,我会把之前的数据给你覆盖掉,把它呢拿进去好啊,这个同学呢,他也写了这么一个SQL语句,只不过呀,我们的这个买circleq啊,不是买circleq的,我们的这个have表数据有5万条数据啊,5万条,然后他是刚开始进行测试嘛,测试啊,他只是拿了一条数据进行测试,OK啊。
07:11
5万条的数据,Insert over right,最终啊,变成了一条了啊,5万条变成了一条了,好啊,那这个同学呢,过来找我了,他说呃,老师啊,我把公司的那个表数据干丢了,我说那你把哪个表数据干丢了呀?我说你先别急啊啊那哎,那我虽然说告诉他别急。那你说数据丢了有没有事儿啊,哎,数据丢了有事儿,但是我不能让他慌啊,啊,那我说我说没事啊,你先别着急啊,我说哪个表数据丢了呀啊,他告诉我这个表,这个表里边有5万条数据,现在变成一条了啊后来啊,我发现这个表虽然有5万条数据,但是这个表他现在没有人用。哎,没有人正在用这5万张表的5万条数据啊,没有人正在用这个5万条数据的这个表啊,那什么时候用呢。
08:06
那数据现在已经落到HDFS了,那到达HDFS的数据一般呢,就是离线数仓来使用了,那离线数仓来使用的话,离线数仓我们在计算的时候,一般都是在凌晨,哎,来做这个统计的啊,你比方说每天的凌晨00:00:00,我来统计头一天的数据。好了,那也就是说我们这5万条数据啊,我在凌晨之前我给你恢复了,哎,是不是就没有影响了啊,那你呢,也不用跑路了,哎,虽然说三库了,但是你给他恢复了,那你呀,也不需要跑路了,好了啊,其实啊,在数仓当中啊,我们做分层啊ods层。它的目的就是这样的,那ODS层它存储的是什么数据呢?啊,我们和data叉的数据啊,啊和datax传输过来的数据过来之后,我们会先给它存放在ods层,如果说是离线数仓的话,我们先拿离线数仓来举例,那么ods层那就是氦呗,哎,我们的数仓啊,用HDFS存储,但是数仓建模我们是给它建模在have上的,那既然是在have上,那ods层存储的就是一个一个的表嘛,哎,其实每一层它存储的都是表啊,都是表好了,那弗鲁姆和这差的数据过来,我们会原封不动的放在ods层的一张表当中。
09:38
那既然是原封不动的放在ods层,那这个ods层大家能不能体会出来它有什么作用啊,哎,对,是不是用来做一个备份的呀。数据过来之后,我原封不动的放在这儿,好啊,假设啊,这个同学他是DWD层的表数据丢了啊,现在变成一条了,那对于你们来说,你们有没有什么方式能把这一条数据再次给它恢复到5万条呢?诶这个是不是就比较简单了,你看这它是一个have的表了,这是一个have的表,那我的ods层依然也是一个have的表数据啊。
10:21
你这5万条儿数据是怎么来的?是不是就是弗姆data叉的数据过来,然后我统计出来的,那好了,那我这儿有一个备份,我是不是依然可以通过我之前的数据,我给你再重新执行一遍SQL语句就完事了,SQ语句我们之前都是写好的吧,而且每天都要执行一次,那么我再次执行一下这个社会语句,诶,那这个5万条数据是不是就恢复了?好,那说到这儿大家就应该知道ods层它的一个作用了,叫什么呀?哎,就是备份啊,好了。那这个是我们数仓的第一层叫做ODS,那接下来我们看DWD层,它是用来干嘛的,那DWD层行,那接下来我们可能要考虑到计算了,那计算的话啊,假设啊,我们现在有这么一条数据,这个数据当中有一个字段叫做cost cosd什么意思呢?额啊,你比方说是十块钱好了,那接下来我们要做统计了呀,那要做统计了,那来呗,我们就一条一条的这个订单来加嘛,啊是吧,一条一条订单来加,那一条一条订单我们来进行给他累加的时候,好,你说有没有这么一种可能啊,诶,我有这么一条数据,它的这个cost字段啊,Cost字段不是数字了,变成了一个abcd了啊,我在传输的过程当中,导致我这条数据发生了错乱,哎,我的程序里有一个bug。
11:55
然后我把数据给你写错了,那这个时候怎么办呢?啊,那这个我们在统计的时候是不是就会报错呀,它会报一个错,叫做类型不匹配好,那这个问题你说我们想不想让它发生啊,其实我们是不想让这种问题发生的,所以说在统计之前,哎,在统计指标之前,我们要先做这么一个事儿,叫做数据清洗啊数据清洗什么意思呢?啊,什么叫做数据清洗呢?我把这些在接下来统计可能出错的字段,我先给你进行一个判断啊,你看啊,你卡的金额,诶你不是数字了,那怎么办呢?我是把你这条数据删掉呢,我还是做一个什么其他的处理呢?哎,或者说哎,我还有其他的数据,你这个ID和我这个ID你俩能照应上,那照应上之后,你这哎也有一个卡金额,那么我。
12:55
啊,是否能把这个看似的金额拿过来做统计呢?OK,这个就是数据清洗啊要做的事儿,那除了这个之外啊,在数据清洗当中还有一个非常常见的内容啊,我们经常能看到过这样的一个手机号啊,你像132叉叉叉叉,然后0301好,那这是什么意思呢?我们只能看到手机号的前面和后面中间我给你进行了一个加密。
13:24
哎,那这个动作啊,叫做敏感数据的脱敏啊,除了手机号,你像身份证号一般呢,我们也会给他做一个脱敏的动作,哎,数据呢,我们不会让所有的人都看得到的,你像我们的开发人员有很多,那么我们并不会让所有的开发人员都看到这些敏感的数据,当然了,肯定会有这么一个人,他有能查看到的这个权限嘛,啊但是啊,更多的人还是看不到这个敏感数据的,那这个动作叫做脱敏,那它呀也是在DWD层来做的这个事儿啊好,那DWD层它主要做的是干嘛呀?哎,就是叫做数据清洗啊好,那接下来我们看DWS层,那还是啊,我们呢,要进行这个指标统计了,那要进行指标统计,我们分析一下啊,我现在,哎,这有这么一个指标啊,这有这么一个指标,那第一个指标啊,它需要两个表。
14:24
哎,照得来。那第二个指标呢,它也需要两个表照的来好啊,大家想想,那这样的话,我是照了几次,是不是照了两次啊啊,那我这个表有10亿条数据,我这个表也有10亿条数据,这叫什么呀。这是不是叫做大表照,那大表照啊,它是非常影响性能的,那这个问题如果说让你们来解决的话,你们有没有一个什么解决的办法呢。好,哎,我是不是可以这么做呀,你看啊,我依然是有两个指标啊,两个指标啊,两个表,哎,那我在转的时候,我并没有直接照,我是先提前的,哎,我把你这两张表照样好,你这个指标需要他俩照啊,这个指标也需要他俩照,那我给你怎么办呢?我提前照应好呗,照好之后是不是有一个中间表啊,好了,那有一个中间表了,那接下来我这个指标它需要这两个表照应的时候,诶,我直接从中间表当中做一个聚合就完事了,直接做一个count萨摩或者是其他的动作,那我这个指标是不是也可以从这个中间表当中进行聚合呀,好。
15:41
那么这样啊,你看我们同样的一个照按动作,是不是就给它节省下来了,哎,节省了一次啊,那我们现在只是两个指标,那我要有十个指标呢,我是不是节省了很多次的照安呢?那这十个指标都是这两张表照得来的,那这样我们节省的性能是不是就非常多了?OK,那DWS层啊,它的作用叫做预聚合,哎,预先聚合啊,预。
16:09
聚合啊聚合。OK好,那adx层啊,那到这没有别的了,那它是干嘛呢。它就是用来统计最终的指标的了啊,那稍后呢,我们也会大家带着大家来看一看,在我们的实时数仓和离线数仓当中一共有哪些指标,好了,那好了,那现在数据已经到ADS层了啊,现在老板呢,他又要去投资了,那老板呢,跟你说,哎,我要我们公司的十年成交额,然后哎,你这回好,你并没有把每一条数据拿着十个移动硬盘,哎给老板,然后你干嘛呢?你呀,给老板了一个SQ语句,你说老板我们的数据啊,都在这个have啊,或者是h base啊,或者是当中来存储了,然后你给你给老板的一个S语句,你说老板呢,你拿着这个S语句,你去我们的这个数据仓库当中去查询吧,啊,那老板肯定非开了你不可。
17:09
那你说老板他会社会语句吗?你给他个社会语句他也不懂啊啊,那老板肯定是不会,那怎么办呢?哎,我们呢,应该提前把数据查询出来给老板看的啊,那你说我通过SQL语句啊查询出来,然后我给老板发一个微信,你说老板这个数据我给你查出来了,然后我给你发到微信上了啊那行不行呢?啊,其实也不太好,那怎么办啊啊这个时候我们就需要啊在这边做这么一个事儿了。叫做报表系统,哎,一个可视化的报表系统,那这个报表系统它有什么用呢?啊,它就是一个网站,在这个网站上我们可能有饼图啊,我们可能有这个柱状图啊,柱状图还有表格哎,等等等等这么一系列的图形,或者是折线图啊,那么我们呢,通过这些可视化的报表,把我们的数据实时的展示到这块。
18:10
屏幕上OK,那么老板接着再想去投资的时候,直接给这个投资商啊,把我们公司的这个指标,我打开一个网站,诶那你就看呗,你想看什么看什么,这样是不是就方便多了呀?哎,这个才是老板想要的啊,老板想要的是省事好了,那除了报表系统之外呀,我们这儿还有一个用户画像啊,那这个用户画像它是干嘛的呢?诶它呀,就是用来给用户打标签的啊。那他呀,一般就是结合着这个推荐系统来用,那这个推荐系统它又是干嘛的?哎,我们应该都知道,推荐系统它就是用来给我们用户做推荐的啊,你比方说我们浏览了这个京东或者淘宝之后啊,你搜索了一款商品,或者是你点击了一款商品,你会发现在最近的几天他都会给你推荐同类的商品。
19:04
啊,好了,那现在有这么一个事儿,海哥呀,半夜12点哎,去浏览了我们的京东网站啊,注意啊,是半夜12点去浏览了京东网站,然后搜索海狗人参丸,那海哥为什么要半夜12点去呢?他可能觉得半夜12点去就没有人知道了呀,啊,夜深人静了嘛,啊那其实并不难,不管你什么时候去,这个经融网站都会把你的这个信息给你捕捉到啊。OK,那海哥浏览完这个京东网站之后,他就发现,诶,最近的这一段时间呢,他都给我推荐同类的商品,那好了,那既然给海哥呀推荐啊这么一类商品了,那大家想一个问题啊,你说这个推荐系统它是专门给大海哥用的吗?哎,肯定不能吧,肯定不能专门给大海哥用啊,那你说有没有这么可能啊,有没有这么几个人哎,他们也被推荐了跟海哥同样的商品啊,海哥推荐什么了啊,他们也推荐什么了?
20:10
是不是有可能啊,那既然这些人都被推荐了同类的商品,说白了。他们怎么的,他们是不是有一些共同的特征呢?我才会给你推荐同类的商品嘛,好了,那这个共同的特征叫什么呢?哎,这个共同的特征就叫做用户的标签啊,共同特征就叫做用户标签,那这些共同特征是怎么出来的呢?好,那这个共同的特征就是由用户画像,哎,给我们计算出来的啊,用户画像它就能给我们每一个用户进行打标签啊,你比方说海哥半夜12点浏览京东网站,那给海哥一个什么标签合适啊,半夜12点是不是喜欢熬夜呀?啊,那除了海哥之外,是不是也会有这么一类人,哎,他们也喜欢熬夜,那怎么办?那我就给你这一类人推荐喜欢熬夜的商品就完了呗,哎看一看喜欢熬夜的人他们都喜欢买什么?
21:20
啊,你像这个什么手纸啊,哎,面膜啊什么什么的啊,那这些都都可能是熬夜的人啊,喜他会用得到的啊,哎,他们比较喜欢,OK,那这个就是推荐系统要做的事儿啊,推荐系统呢,它是用来给用户做推荐的,那用户画像呢,它是给用户来进行打标签的啊那这个用户画像和推荐系统他们是怎么做的呢?诶,其实啊,就是通过机器学习的算法来帮我们提炼出来的这些啊数据以及用户的特征等,OK,那么这个就是我们大数据的这个。大数据平台当中的一些,呃,应用啊,我们大数据所产生的这些数据啊,它的应用啊,OK,有这么多啊,你看下边还有一句话,数据仓库,它并不是数据的最终目的,那么数据的最终目的是为了干嘛呢?哎,是为了呀,给我们这些数据的输出啊,提前做好,你看这个备份啊,清洗聚合统计等等等等这些操作啊,数据的最终目的那就是为了我们的指标而生的啊好。
我来说两句