00:02
好,同学们,我们来上课啊,呃,接着上午的聊啊,嗯,上午的话我们一起把这个。就是日活宽表这个任务啊,把这个现在能做的事情呢,基本上也都已经把它做完了啊,最后的话,我们只差就是写入到这个最后的一个存储系统中啊。就是op啊,那这个的话,我们呃规划的是使用这个ES啊,这个等我们讲完以后再来做好吧。行,呃,那把这个事都做完以后呢,呃,基本上这个任务就完成了啊,然后最后呢,还有一个这个。状态数据还原啊,这个现在也不用做啊,这个是等我们能够把这个数据正常写入到ES以后,我们再来去分析这个问题。好吧,目前是不用去管它的啊OK。呃,然后嗯,给大家说一个小问题啊,这个大家下去以后,你们在做的时候呢,可能会遇到这个问题啊,正好这个上午有同学问到了啊呃,稍等一下啊,我找一下那个。
01:03
找一下这个错误啊,大家可以看一下啊。来一起来看一下这个错误啊,就是我们在座。这个日活宽表的这个维度关联的时候啊,它可能会报出来一个这个空指针异常。对吧,那么这个报出来这个控制帧异常以后呢,首先你先定位一下是哪一行代码报了这个控制帧。对吧,这个基本的这个错误你要会看啊。这有点小是吧,我稍微大一点啊,就是你要先看一下它是哪一行报了这个控制帧啊,你比如说这不告诉你控制帧的吗?那你看啊,是我们自己的代码中。对吧,然后呢,某一行报了这个控制证。好呃,因为它这个代码跟我这个代码是一样的,所以说170行,那我们来看一下啊。这个170行的话,是这个位置报了控制帧了,OK,那我报了这个控制帧以后呢,我们要学会去分析一下啊,你说这一行代码报控制帧的话。谁是空啊?是不是只有它才有可能为空吧,因为你空指针的原因就是你对象去调用方法了,或者什么调用属性了,然后报出来这个空指针说它是为空,那如果说它为空的情况下。
02:09
那你就往上推啊。就说明我们在把你的一个加成字符串转换成一个什么加成对象的时候,它就没有转换成功啊,那就说明说明它可能就根本就没有。理解吧,那如果说他没有的话,也就意味着我们从你的RA中啊,去读你的这个用用户对象的时候,就读你这个维度的时候读不到。诶,那这个时候你要去想一下啊,为什么会读不到,那读不到原因呢,有这么两个,首先第一个就是你当前这个red中呢,并没有去做那个全量同步,对吧,来看一下啊kiss,然后呢,DA dim。有声音放啊。OK,就是你没有去做这个全量同步,你并没有把这个所有的这个用户呢,都给他这个同步进来,那么这样的话,你肯定是从这里面查不到的,那如果说你这个查不到的情况下,这个地方就变成空了啊,这是一种情况,那么还有一种情况就是有的同学说,诶,我确实是做了这个全量同步的,而且呢,我也能够从我的这个red中的能够查到啊,就是我这个所有这个同步过来这个用户的这个维度信息,但呢还是会报这个控制帧好来注意啊,这种情况是因为什么呢?给大家去说一下啊,这种情况是因为我们这个生成数据的一个问题。
03:21
啊,生成数据的问题,来给大家去分析一下,呃,因为我们现在的话用到了两两两两种数据啊,一种就是我们的日志数据,一种是我们的这个叫这个业务数据啊,因为你的维度数据就属于你的业务数据啊,所以说我们需要去看一下这个生成器啊同学们,呃,我们先看一下我们的这个。业务数据的这个生成器啊,然后呢,我们就看它的这个配置文件就行了啊,这个配置文件中有一个配置叫这个会员的一个最大值。对吧,目前我配的是100啊,然后呢,我们再打开一个链接,好我们来看一下,这个叫dblo啊,好过来过来以后呢,它里面也有一个配置文件,我们看一下啊,这个里面的话呢,有一个生成新用户的一个数量。
04:10
能看到吧,来就这两个配置啊,我把这个定个图啊。好,给大家去说一下啊。呃,这个是你生成新用户的数量,就说白了,如果说我们要去生成这个业务数据的话呢,我们最多就生成100个用户,最多就生成100个用户,那么这个地方是你这个会员的最大值,这个是你在生成业务数据的时候,你的业务数据中的那个会员ID啊UID对吧,它最大是多少,它也是100,如果说这两个你是同步的。对吧,那么他将来关联的时候是一定能够关联成功的,那么如果说大家这个会报空指针的话,一般的原因就是因为你这个地方的值是大于这个值的。你比如说啊,我这个业务数据中,我生成的是100个用户,那我这个UID最大也也就是个100对吧,但是你这个位置的话,你比如说你写了个写了个1000。是不是假如说你写了个1000好,那么他在这个生成数据的时候呢,很有可能你的某一条数据中,你的UID呢是200。
05:07
对吧,你的UID是200 OK,如果说你的UID是200的话,等你来到我们这个维度合并的时候,那么你从你的这个数据中啊,你拿到了这个UID呢,就是个200,好,那你拿到200以后呢,你拼成这个key,然后到你的red面去读,你就要去读一个UID为200的数据,但实际上的话呢,我们给你生成的时候呢,我只有100个用户,我是没有200那个什么用户的。能听懂吧,这样的话呢,你也就读不到啊,就会爆出这个控制针来。所以说你一定要保证什么呀,保证就是呃,这个值要小于等于它就可以了。明白吧,就是你的这个业务数据生成的时候呢,这个会员的最大值要小于等于我们啊不对啊,是你这个日志数据啊,日志数据你这个生成的这个会员的这个最大值要小于等于我们业务数据生成的时候,诶,我们所配的这个生成这个新用户的这个数量,新用户这个数量的这个值。明白了吧,啊,我这个是配的是同步的啊,都是100个能听到吧,大家可以看一下你们自己的配置啊,应该是,如果会出这个问题的话,应该就是你这个地方。
06:09
肯定是大于了啊,大于它了,那就会出这个问题。好吧,把这个控制异常给大家这个去说一说啊,这个是呃,隐藏的比较深的一个问题啊,大家这个需要注意一下。OK吧,行,嗯,好吧,那这个问题我们简单一说啊。
我来说两句