00:00
好来,下面我们关联这个地区维度啊,这个地区维度的话呢,我们是这样的啊,就是通过这个DA in for,然后呢,拿到它的这个叫做promise ID啊。对吧,就这个省份ID啊。这,这是我们的这个promise ID啊,OK,那你拿到这个promise ID以后呢,接下来你是不是要到你的这个red中去找了吧?找谁呀,找这个东西对吧?这不你在这地区维度吗?好,注意啊,如果说你的ready中没有这些东西的,那就说明你之前在这个ods层呢,并没有给他做引导啊,因为它是属于我们的维度数据,维度数据呢,你要什么做一个全量的什么导入啊,就是我们做一个什么历史数据的一个引导。那如果你要没引导的话,你就什么去把它引导一下好吧,行呃,这个地方啊,我们给大家稍微说一点事儿啊,说什么事呢。看一下啊。呃,我们之前哈在这个page置log,注意啊,这个配置log是怎么来的呢?是拿我们的日志数据给它解析出来,对不对,我们把日志呢,解析成了你的什么页面访问啊,什么曝光啊,什么事件啊。
01:06
是吧,之前我们这个生成的这个日志数据中啊,这个地方呢,它记录的是什么呀,它不是记录了你的省份ID。明白了吧,他进入的是一个六位的什么地区编码。叫A你能理解吧,它记录是六位的地区编码好就说白了啊,你回到你的这个数据库中,我给你说一下这个事啊。好来过来啊,过来以后找到这个表啊,表里面我们找到这个base啊,打开表。就之前我们生成的数据呢,里面记录是这个东西。能听到吧。啊,记录的是这个东西,就说白了,我的一条数据中,我会记录你是哪一个地区的,但是我记录的是一个什么,比如说幺幺啊,什么0000啊,是这个东西。啊,那之前你用的话也没啥问题啊,但是到了我们这个实时项目处理过程中呢,就会稍微麻烦一点,为什么呢?因为我们所有的这个用户维度啊,所有的这个什么不是用户维度啊,所有的这个维度数据我们将来往这个dim层里面去放的时候,就往你的这个放的时候,我们的每条数据呢,是用的是你的ID。
02:08
对吧,你看一下我们在里面放的时候用的是你的ID。你能听懂吧,好,那现在就会有一个问题啊,什么问题呢,你看一下。如果说啊,就是我的配置log里面,我生成的数据呢,记录的是你的六位的地区编码,就是110000对吧,那将来我想拿上拿它呢,去做什么,去做这个地区维度的一个关联,那你到这个red去找的时候,对吧,你就拿上,你就拿上这个东西啊,到你的red去找,你发现你找不着。对吧,因为我的我记录的什么,我记录的是它的一个什么呀,叫。ID啊,就是你这个整个表中的一个什么ID。你能明白我的意思吧,说你这匹配你你拿它去找你,你能找到吗?你ID里面你ID里面有有有这个值吗?它是没有的。所以说以前我们会怎么做啊,以前我们会什么呀,对于你的这个地区的这个维度来讲,我们会专门拿它作为什么ID,然后呢,再到你的ready存一份就说白了啊,现在我们怎么存的呀,现在这么存的啊。
03:09
就是我的维度里面是这么存的啊,就是中啊好,现在是dim叫什么叫贝pro,然后呢,比如说叫一吧,对吧,现在这么存的,以前的话我们还得什么,还得这么去存一下,就是1001啊不对啊,应应该是110000啊,你要这么去存,因为你这个地方拿到的数据,以前你拿的数据就是这个110000,所以说呢,你要拿上这个值,然后呢,跟它去关联,才能把数据关联出来。能明白了吧,好,但是呢,目前我们就不需要这么麻烦了啊,就是我们直接什么还是按照固定的方式,我们直接用你的ID就可以的,因为我们把这个数据生成器给他改了一下,你现在这个配置log中,或者是你这个生成的日志数据中啊,它所记录的这个字段呢,就已经不再是这个值了,而是这个值了。能听懂吧,记住就是这个值,所以说呢,我们可以放心大胆的拿出来你的省份的ID,然后呢,到你的中呢去做这个关联就可以了。
04:08
理解吧,这也就是为什么,呃,诶。这也就是为什么那个我们在讲之前啊,我告诉大家说,你把这个生成器给我换一下哈。对吧,我再来把这个事说一下啊,有的同学可能说没有换哈,有的同学可能说这个没有听到,或者是没有注意,没有换啊,就这个生成器你要换成它。因为我不确保你们手里面拿的那个版本是不是改过的啊,但是这个里面肯定是改过的,如果说你们的那个没有改,但是呢,你还没有换成我这个生成记的话,那你到了这个地区的这个地方,你是关联不成功的,你每次拿的是六位的那个地区编码,然后呢去跟人家的那个什么ID去关联。对吧,你肯定关联不成功。好吧,我把这个事给你强调一下啊,你就知道了啊,行那吧,那接下来我们我们现在就不用什么去考虑了啊,因为这个东西已经改过了。啊,这个之前这个现在啊,好现在是这么存的啊。
05:06
然后呢,之前是这么存的啊,对吧,因为大家这个手里面这个生存器的版本呢,可能不太一致啊,这个可能不太一致,所以说呢,这个需要我强调一下好吧,行,那这个已知道以后呢,接下来操作就是很简单了哈,怎么操作呀,你把它这个拿出来,拿出来以后呢。拼接K啊,V叫的这个叫promise key啊好,那你就把这个拿过来呗。对吧。拿一个过来,放到这后面拼成Dollar,然后呢,Promise ID。然后到吧,拼好以后来吧,Je,然get get谁呀,把这个red promise key放进来,这个拿到的是一个promised JA。好,然后呢,转一下啊。呃,摘点pass object,然后呢,把这个promise摘传进去,好拿到一个摘了一个object OK,下面就是补充你的维度了啊,那首先我们要提取了啊,就是呃,我们这里面用什么呀?我们这里面用的是这么几个东西。
06:15
对吧,用的是它啊,那要把它提取出来,怎么提呢?加上object.get群好,那你提的时候你不要直接写这个名字啊,因为有可能不一致啊,你看他好吧。看它啊,或者是看你的这个数据库啊,或者看这也行啊,看这个也行,呃,那我看这个吧,对吧,因为你的这里面存着这个字段啊,这里面存着这个字段肯定是跟你这个数据库是一致的,明白吧,那我们看这个吧,好吧,来看一下。首先这个第一个是这个叫pro name,那么这里面存的就是一个name对吧,所以说们直接什么拿name好,这是pro name OK,然后呢,再来提啊。盖成一个群啊,然后这个是第二个是ISO code的啊,那这里面就是就是ISO扣的对吧,好接收回来啊,这是那个promise ISO code OK。
07:15
好,再来提啊,下面是3166啊316的,它就叫ISO3166啊,3166啊,这个千万不要写错了哈。就叫3166吧。OK啊,然后呢,再来提一个啊。盖着啊,诶OK,最后一个是a code对吧,它就叫area code啊。
08:01
AOK,那把这个提出来以后呢,我们就补充到,补充到这个什么呀,就是补充到你这个对象中啊好,咱们补充了d for,它的province the name就等于什么呀,就等于你当前这个province name。对吧,Di for的province叫这个ISO code啊,那就等于什么province的is so code好,For province3166,那就等于province的3166啊,OK do的。L real code对不对?呃,叫pro area real code OK,那就等于pro的real code OK。这就给他补充好了。能听懂吧,好,那这个补充好以后呢,接下来我们就日期字段的处理啊,这个日期字段的处理的话就比较简单了啊,直接拿过来去写完了啊,就不再分开说了啊两个。
09:04
两个啊,一个是你的,呃,DTDT叫什么?DT就是你的date,就是年月日啊,这个HR就是小时啊,这那这个年月日小时的话,我们怎么写啊,呃,我们需要把他的那个TS给它拿出来,然后再去做转换哈,TS拿出来去做转换。嗯,TS拿出来做转换,这个怎么转呀,用它好像不太好转啊,它是处理年月日还好处理啊,因为它是个data啊行,那这样来做吧,嗯,我还是声明一个声明一个对象哈,叫。Simple date format啊,写个啊YYYY-MM-DD,然后呢HH,然后呢MMSS。对吧。能看到吧,同学们好,把这个写出来啊呃,这个是这个是24小时吧,大写的好,来SDF行,这个有了以后你看了哈,接下来我怎么去补充呢,回到这儿。
10:00
回到这,然后呢,我们先这样啊,就是直接用上一个data,然后呢,把这个配置log的TS拿出来,好先处理成一个data,然后呢,SDF.format把data传进去,好就拿到一个data的,应该叫DTHR好吧。是不是,然后啊,你的格式是年月日十分秒,那我就什么通过你的空格一切,那就是你的年月日,然后再通过冒号一切你的小时就出来了,对吧,所以我们再来去做啊,就是DTR这split通过空格切一下,切出来以后,这时候呢,DTR的一个AR数组啊dta AR的什么D0个。对吧,第零个啊,就是我的DT好,然后呢,DTHR的第一个,第一个应该是我们的十分秒对不对,第一个是这个啊,就是十分秒,然后再去切一下啊。再去切,通过冒号切啊,切开以后呢,我再取它的第零个就可以了,这是我的HR,好,这两个有了以后还是什么补充到对象中啊,补充到对象中OK,怎么补充呢?那就是DA点叫DT,那就等于DT,然后呢,DA for的HR,那就等于HR。
11:21
对吧,这就补充好了啊,行,那把这个都补充好以后,千万不要忘了把你当前你处理好的这个对象啊。是不是得给他什么保留下来了呀?对不对,你看啊,你的每一个对象你做完以后呢,你是不得给人这个维护起来,然后给他返回回去的呀。因为我们是一个map partitions嘛,那么呃,人家给你传过来的是一个迭代器,你做了一个迭代以后,你的每个对象你不得给人维护起来吗。是这个意思吧,同学们好,那所以说我们应该这么去做啊,就是再来一个什么输出啊,再来个list buffer,然后这里面放的就是我的dau音。
12:06
好,这是那个dau in for OK,诶。好银丝吧,行来,那这个有了以后呢,我们把它拿过来复制一下啊。到这就是我处理完成以后呢,我就把这个东西呢,给它append到daf放进去。对吧,最后呢,返回回去就是dau for。对吧,因为人家这个map parts啊,他要求你返回的是一个,呃啊,他给你一个,你给我返回一个啊,行,那最后把这个介绍回来。好,这是我们的dauo的stream行,那其实到这一步呢,我们就把这个该处理的数据都处理完了,那接下来呢,就是。接下来的操作啊,应该就是写入到ES了啊,写入到o lap中,明白吧,就说白了,这个DAO这个数据就是我们将来要去分析的数据了。
13:09
好吧,但是现在我们还写不了啊,这我们后面后面再来完成啊,行,现在我们先这样啊,先去做打印,我们先看一下我们处理的这个数据对不对。OK吧,来打印一下啊。把它这个重新跑一下dau啊,重跑一下。那你重跑的话,为了能够看到这个效果,为了降哈。把它里面记录的那个东西给它删一下啊dau,然后呢,Dau心吧。对吧,这个删一下,如果你不删的话,它这个大多数数据都给你过滤掉了,过滤掉以后你也看不了几条数据啊,所以把它删了啊。好删掉删掉以后来这个起了,起了以后呢,我们就跑出去了啊,跑数据在这跑一下。好,这个数据一跑,那我们就可以看结果了啊。
14:11
好,来,这就是我们这个结果啊呃。还没跑完啊。还没跑完。行吧,这个不管了啊,我们就随便拿出来一个啊。随便看一个吧,你看了啊,这个deal in for。该有的值都有吧,看一下我们补充的维度有没有啊。补充的维度有没有你看了哈,这个是你的什么呀。这什么东西啊,性别。对吧,年龄。地区维度。是不是地区维度啊,都有啊,然后呢,这个是你的。DT就是你的HR。因为我们刚刚跑的数据是11点的数据,你看这个HR都是11点的啊。对吧,时间的话都是3月24号的。然后来吧,啊,那就是说明什么,说明我们这个维度的补充啊,应该是呃,没啥问题的。
15:03
好吧,同学们啊,维度补充没啥问题啊,行呃,那我们就做完了啊,做完以后最后我们就只要保证这个数据呢,能够成功写入到你的ES啊就完事了。OK吧,那这个东西我们还没有讲啊,我们就先把它这个放到这,等我们讲完以后呢,再回头把它补充一下,好吧,听一下啊。
我来说两句