00:00
对吧,那么你要处理干什么呢?那其实咱们就进入第二步了,我的第二步操作,我其实呢,是要把我们这个数据是不是要保存到我的菲尼格斯呀,对吧?那接下来咱们现在呢,要保存数据到菲尼克斯啊,那么咱现在呢,要保存我们这数据到我们这个菲利克斯,那么如果保存数据到菲尼克斯的话,那么这个时候呢,咱们是不是得去提交我们现在做这样的一个stream,那么这里呢,它也是给你拿了一个RDD,对吧?那么咱们对我的RD数据呢,来做一个处理,对吧?那么去调查里面C有方法,但是这里面根本就没有保存到我这菲利克斯的,所以说怎么办呢?在保存之前咱们是不是得先导包了aport的找哪个包呢?在阿尔帕提对吧?呃,在or奇,然后呢,阿尔法提,我们现在这个下边去找我们这个菲利克斯,对吧,然后在菲利克斯下面是不是有一个Spark呀,对吧,然后咱把当前这个Spark下的所有内容给它导过来,然后我这样的话,我是不是就可以调用我们现在它的一个save to这方法。
01:00
法了,在这里啊,诶还好吧,我机智是不是来,那咱现在是不是可以去调它里面的一个seem to什么什么什么菲利克斯方法呀,对吧,但注意同学们在咱们这里边没有对吧?我现在呢在咱这里边对吧?你看我现在呢,在咱们这里边,在保存的时候注意一下同学们,我现在呢,再把这个打过来对吧,这是倒过来啊倒过来来在这里,我现在去叫rd.save对吧,然后呢,咱们在这里对吧,把这个拿过来,然后呢,我发现倒完包之后呢,在这里还没有。什么原因啊?啊,其实这个你们应该在咱们这个Spark里边也接触过啊,其实你们应该在咱Spark里接触过,对吧?说比如说啊,我现在呢,想去使用一些什么back key back key back key这样的算子,对,但是我发现如果我现在呢,放我这个单值数据的话,我就没有这些算子,但如果我现在把这结构转化一下,转化成KY这类型的这样的一个RDD的话,那么这个时候这个算子呀,是不是出来了呀,对吧,那我现在呢,跟本身大家注意看,我现在呢,在咱们这保存的时候,对吧,我拿的这个数据,这个数据什么类型的,我本身咱们现在这个里边,我拿的数据往上走是不是还是我们这个consumer record的呀,它是不是咱KV类型的呀,你说我现在KV类型的数据,到时候往你这个A里保存,我怎么保存呀。
02:27
对吧,这东西没法保存对吧?没法保存,所以说那咱们现在再往下走,那应该干什么,是不是在这里做一些我的处理的呀,对吧,那么怎么处理呢?你把RDD拿到了,那么对RDD它里边怎么处理,其实和谁,其实和咱们现在对我的d stream这个操作呢,其实是一样的啊,其实是一样的,对吧,还是把咱们这个东西呢,这个value读出来,只取的value部分,然后接下来根据我们现在的它拿到的一个字串,然后把它转换成我们对应的一个类型,对吧,来注意看咱们把这块呢给拿一下,对吧,说本身啊,现在你先别着急去保存,对吧,为什么呢?因为我们现在呢在这里,对吧,我们要把它先去转换一下,因为当前RDD啊,它里边的结构对吧,不是我们现在想要的结构,对吧,所以说就做一个转换,那么目前RDD放的什么类数据呢?那你看一看对吧,它这里边其实是我们一个consumer record的一些数据,对吧?那么我现在是不是可以把这个record做个结构转换,你给我传过来是record,然后接下来,那我现在呢。
03:28
我要给你转换一下,转换成什么呢?首先第一个我是不是可以获取我们这个Jason格式它的一个啊,获取省份的jas格式字串吧,是吧,获取我们省份它的一个Jason格式字符串,我们现在可以获取这个事,对吧?那么怎么获取呢?那么record点我们这个value对吧,然后现在点VR对吧,那么这块呢,大家看咱们现在这个省份的这个Jason字串的形式是不是就来了呀,对吧,这个就完事了对吧?然后接下来,那么你现在呢,把这个东西啊,对吧,这个转化之后,同学们,那这个也不是我想要的效果,对吧?因为我们在操作的时候,那这个jas格式字符串是不是也不太便于我操作呀,所以说呢,咱们干什么呢?我是不是可以将我们这个Jason格式字符串,那封装为什么呢?是不是可以封装为某一个样例对象啊,我们在这里是不是封装了一个省份的一样例类pro ino这样的一个对象,那么怎么去把。
04:28
的对象转换成咱们这个字符串呢,昨天咱们其实给大家介绍过。啊,昨天咱去给大家介绍过对吧,那么我们现在呢,这里边有个son啊,这里边呢,我有一个杰。找一下包是吧,然后现在这里边是不是有一个叫什么pass object的方法,然后咱们用的是这个吧,咱们是用的这个,那么你可以给我传传什么呢?传我们这S逗号过来,那么你要把它转换成什么类型的一个这个对象呢?咱们应该把它转换成我们一个province的吧,Info,把它转换成我这样的一个对象,然后接下来点2V2,那么这个时候你拿到的是一个省份对象,然后咱们现在呢,可以把我们的省份对象啊给它返回去,那么经过我现在map之后啊,大家看一看,那我现在点VR一下,那么这个时候它是不是得到了一个新的D啊,这个呢叫promise,然后呢,Inform r DD,那么你现在呢,这个RDD,注意看啊,原来我去调save方法的时候这没有,然后接下来我要去调我的save对吧,这个方法,然后呢,把咱们该导的包给导进来对吧,该导包给导进来,然后进下来,咱们在这里大家看save to菲利克斯是不是来了呀,对吧?所以说咱们这里呢。
05:42
涉及到一个隐视转换,其实隐视转换呢,也是我们这SKY里边比较强大的一个地方对吧?比较强大的一个地方,对就好多事啊,我这个不像扎va这样,我跟这个代码我直前跟过去了,对吧?他其实帮咱们隐视做了很多事对吧?隐视做了很多事对吧?那么咱们现在呢,可以去调我的save to菲利格斯对吧这个方法,那么我现在在调我这方法的时候,是不是得给这方法传参呀,啊都需要哪些参数呢?首先第一个咱们这个表的名字,这个表的名字呢,那么咱们在这里是不是得去这个和HB的名字叫一致啊,而且注意大小写对吧?咱们现在呢叫j mo0523 provi in inform对吧?那给拿过来这个大小写切换的,我这里没有改过,就ctrl shift的U啊,Ctrl shift u对吧,这是第一个,那么第二个参数,咱们现在传什么,是不是传的是我们这个列呀,对吧,SEQ对吧,他要求你给我传一个字符串集合过来,那么在咱们省份里边,那么都有哪些我们的列呢?那你可以。
06:42
看一看省份,它所对应的列主要有这么几个ID,然后呢,咱们这个name,然后接下来every code以及啊咱们这个ISO code的,所以说咱们把这几个呢给拿过来对吧,一个是我们这个ID啊,一个我们这个ID,一个呢是我们的name,还有一个呢,是我们这个every code转换成大写啊,然后另外一个呢,是我们这个ISO code啊把这个东西呢,转化为我们的大写地区编码以及地区啊它的一个国际编码啊every code以及我们这个as code,对吧,这是第二个,那么第三个什么呢?第三个呀,是我们这个配置信息对吧?那么这块大家注意说了,老师这个为什么要用我们的configuration啊,其实咱们现在在这在这里的你没有办法选择。
07:37
对吧,就是说老师为什么用configuration,为什么我现在给我传的这个列是这个是字串的集合,咱们这个没办法选择,为什么?因为你在用别人给你提供的方法吧,对吧,就这个CTO菲尼克斯的方法不是我们自己写的,是别人给咱们提供好的,那么你既然想用别人东西,人家别人啊怎么写,咱们说得怎么用啊,对吧,人家要求你,你得给我传一个咱们现在这个configuration过来,所以说呢,在咱们这里我去new一个configuration,对吧,然后过来,那么是哪个呢?是不是咱had豆呀,对吧,Had豆对吧,这是第三个,第四个,那么咱们呢,这是一个我们这组keepper它的连接,对吧?那么咱们现在呢,来给它指定我们现在这里组keepber啊,它的一个地址哈豆202,哈豆203以及哈豆204端口号2181,好了好,那这样的话,咱们现在呢,就完事了,这个啊咱先完事了,那么你现在保存完事之后,大家不别忘了那。
08:37
我现在首先第一件事,我是不是要从我一倍这个red里面来读取我这个当前我这个便移量啊,对吧?是谁的便移量,是不是应该是我这个主题这个消费者组他所对应的分区偏移量,对吧?一开始没有对吧,那没有的,那咱们现在呢,肯定从最新开始读,那么你处理完之后,这个偏量你是不是得维护回去,对吧?所以说呢,我现在在这里,在咱们这个啊这个这个方案里边,我要干什么呢?我要去啊这个维护或者说保存啊,我们这个偏移量保存变量,那么如果保存偏量的话,用我们这工具类点save outside的方法,把我们这个topic和谁呢,和我们现在这格鲁D给传过去,对吧?把咱们现在呢,还有一个我们这个outside map啊outside range证给传过去对吧,那么我们现在大家想一想,我每一个我基本上在咱们写我离线处理程序的时候,那么这块代码对吧,这个代码我是不是我们现在一直在写呀,对吧,这是干什么的同学们,我为。
09:37
听说写这张代码?我为啥要这么写啊,诶咱们现在这个事解决的什么问题,什么精准一次性消费的问题啊,对吧,我们说精准一次消费呢,它是一个我们通用的东西,对吧?这个东西给大家练这么多遍,就是为了让大家这个东西你得会,对吧,就以后呢,你去工作的话,咱们只要是我们现在这个这个要做实时处理,对吧,大部分数据来源都是哪,都是卡夫卡,就说老师我现在我出去有没有可能说我在这个实时获取这个实时数据的时候,不是从卡法获取的很少啊,就是几会几乎是没有啊,就没有那基本都是从卡法获取的,对吧?那么如果从卡法获取数据的话,你在消费的时候,你是不是要保证咱们这个精准的消费啊,对吧?那么这个套路是一样的啊,这套路是一样的,所以这块呢,你要会啊,这会你要会好了,那咱现在呢。
10:31
把这个处理完之后呢,那我要去做个测试啊,我要做个测试,这个测试呢,那我就想什么呀,我也不动动动它干戈,同学们我就想在这里,你当前你的程序,你的目的不就是为了监控我们现在这个整份数据的变化吗?那我想这样来到我数据库里边,对吧?来到我数据库里边,同学们注意啊,这块我要让你们帮我分析问题了,来到数据库里边找到谁呢?找到我们现在这个省份表,找到省份表里边,原来我这个这这里边,比如说叫北京,现在我给以改成北京一了,对,然后一提交,那么如果你发生变化的话,大家想一想,那么它整个之前流程什么样的,是不是应该是我现在业务数据发生变化,咱们ma是不是可以监控到你的心资的变化呀,对吧,也就说你的变化其实可以保存到我b block的志里面去,然后ma可以监控的变化,把监控的变化放在哪了呢?是不是放到咱们现在G梦0523_DB_M这个主题上去量,然后接下来我们要运行一个程序,谁呢?这个呃,这个应用程序。
11:31
去,我们把这个主题呢,做一个分流,这个分流从这分到哪去呢?是不是应该分到我们的ods base pro1这个base pro里面去了,对吧?然后接下来,那么你现在把这数据放到这个主题里面去之后,咱们是不是在这里我又写了一个什么呀?我是不是又写了一个咱们这样的一个应用程序呀,这是干什么的,是专门从我这个base purpose里边来读数据的,对吧?那么它如果发生变化了,那么你应该可以实时的把这数据呢给读到,读完之后你放在哪了,你是不是把它放到我们现在h base里面去了。
12:02
所以说我希望看到效果是这样的,在这里我发生一个改变,然后我想在h base里边,对吧,来把这个数据查出来。听明白我的意思吗?对吧,我现在在这里,我经改变我这个买送数据库手分表,我在这里,在我一查询,那应该把它给查出来,知道我的意思了吧,同学们,那接下来咱们一起来想,那我要想去做这个事的话,那我现在还需要取什么东西吗?来看一看,就是目前我的进程,现在是都了。Ready在起是吧?哎,不错啊,在这里来到我的OT model,咱们这个里边,然后接下来那我执行server对吧,然后呢,咱们在这里请跟上我ready好,对吧?然后把ready提起来对吧?Ready提起来,那么除了这个呢,还有别的吗?Maxwell是不是也记起来呀,对吧?那我们来到我们的OPT model,然后记起来Maxwell,对吧?那其实Maxwell咱们是不是可以用脚本呀,对吧,Ma well脚本记起来,然后接下来X靠GPS。
13:09
八个有了。还有什么?这块差不多了呗,对吧,那么如果这块可以的话,同学们,那么接下来我来到咱们这里边,我需要运行些程序,把这些东西我都关掉啊,我都需要运行哪些程序呢?首先第一个在ods层,咱们是不是有个DB8这应用程序啊,我是不要把它运行一下来运行啊,我现在运行一下。现在你们先帮想思路对吧,然后一会看效果的时候呢,第一遍应该是出不来的,对吧,来大家看一看,在咱们这里对吧,说value update is not member在这儿。在在在在这是吧,在咱们这里啊。
14:03
啊,我这个属性没了是吧?在这里是我啥时候删的吗?昨天没写,我昨天就没写啊,哎呀,这那咱们现在没写这个,这个东西我后来没运行吗?这个没运行是吧?啊那行,那咱现在来把这个东西,这是最后状态维护是吧?来拿着这个东西是吧,那现在咱现在在运行啊在运行,那先把这个什么呢?先把我们现在的这个。他对给提起来。给接进来,昨天给自己留了个坑,是不是来,那么起完这个之后呢,咱们这个,然后这个这这个是谁,这个订单需要提吗?现在。我想要咱们这个在这里我改数据,然后在省份这个数据可以查到,订单需要起吗?订单不需要是吧?订单不需要的话,那咱们就取这个谁呀,就取咱们地下面的这个呗,Pro一方APP是吧,然后进来咱们现在呢去取一下。
15:06
呃,那么起完之后呢,在咱们这里大家注意看啊,那么咱们一开始呢,我这个如果是我们从我们这个DB下下M这组地上打数据的话,那它应该是可以导偏量的,所以说呢,你看到先是读取偏量,但是呢,在我们的profit里边是吧,把这个拿过来。但是在咱们的provice里边同学们对吧,那我现在呢,其实在执行的时候,我在咱们A里面是不是没有这个数据啊,对吧,那没有数据的话,那么这个时候呢,它其实是吧,那么应该是先保存啊,所以说咱们运营的时候你看一看啊。应该先保存便宜量吧。对吧,保存分区是吧?保存分区好,那咱们现在呢,就来看一看同学们我想要这个效果对吧?我想要的效果呢,是不是应该是这样的,在这里我是不是改一下呀,然后接下来我现在呢,是不是一提交啊,对吧?那么如果一提交的话,那我现在是就开始在这等着了,等着到时候去咱们这里查询,你们觉得我能看到数据吗。
16:18
我觉得够呛。是吧,就是把它运用起来,你们得找出老师这个我用,我要看,我要看到数据还好啊,我要看不到数据的话,你们得帮我分析哪个环节出问题了。比如说同学们来看一看,我现在呢,在他查询的时候,我查询的省份没数据啊,没数据,我执行的时候呢,这个东西看province。那课也没报错呀,对也没数据对吧,那这个怎么回事呢?假如说你们现在看的话,咱们是不是得看一看哪个环节出问题了呀,那你们觉得怎么看呢啊。
17:04
看卡卡偏量有没有变对吧,那你看一看呗,咱们现在最初的时候啊,最初的时候对吧,这是二,这这个保存分区二这是几28832882是吧,然后咱现在呢,这个是2883282,然后这个呢是2874和2849,然后咱现在最上边28742849,你看这行变了,原来是三,现在是四了。对变了,但是呢,我现在在咱们这里边pro它的分区它偏量没变,那那你说环节这个这个这个问题出在哪个环节了呢。就我现在看偏移量的对吧,然后偏移量给你们的一个对吧,这个提示这个里边啊,偏移量读到了这个偏移量的没变是吧,可能是哪个环节出问题了。啊,从哪没读出,从哪ODS没读出来是吧?那大家怎么去确定这个问题呢,同学们。
18:03
啊,怎么去怎么去怎么去咱们这个短去的这个问题,也就是说咱们现在是不是可以这样本身呢,来到咱们是不是来到卡卡里面去了呀,对吧,那么来到咱卡卡里面去,注意看同学们,咱们本身呢在这里我的o model,然后呢卡卡,然后进下来,咱们现在呢B然后呢,去我们这个卡夫卡topic,然我消费一下就可以了,是不是我先看一下啊,然后现在杠杠for the。然后呢,咱们喊豆腐这个呢,是我们这个202端口号是9092对吧?然后接下来杠杠list子看一看啊,咱们当前先看一看这个主题啊,有没有ODS,我们这个base子啊base pro这个是不是有了呀,对吧?然后接下来那么你们现在是不是得看一看我这个这个主题里边是不是这个数据过来了,那你们先看哪个呢?先看谁,我是要监控一下了,我这个是不是消费我当前的卡卡主题里边是不是有数据过来了,那你们先监控谁呢?
19:09
先监控一下DBM对不对,那DBM的话,大家想一想,你偏量改的话,我觉得DBM出问题的几率应该不会太大吧。对吧,你偏量改了,你DBF是不是出问题的这几率不太大呀,对吧,那咱们现在是不是可以直接看谁,是不是直接看这个是吧,看看看谁的看它呗,对吧,那么如果看它的话,那咱们现在应该这样把这些东西呢,改了对吧,改一改,改成什么呢?改成我们现在呢,这里边对吧,Consumer consumer啊consumer,然后接下来这块是不是把它改成topic呀,杠杠topic啊杠topic,然后把它刚才的主题呢给拿过来。啊,把这主题给拿过来对吧,然后我现在呢,要监控他啊,要监控它,那么要想监控他的话,那同学们,那我现在在这里,我是不是再来一次呀,对吧?来把这个北京再改回去对吧?来在这里一提交,注意看同学们,那么咱们呢,要看到啊,它的变化是不是给咱分流了,原来呢是这个对吧。
20:09
498273。然后这个是不是变成七五了,说明咱们现在啊,这个数据这个难到的,然后这里边数据变没变呢,对吧,来看一下同学们在这里没有。那咱们现在是不是基本上可以定位到我哪块出问题了呀?啊是不是可以定位哪个哪个出题了,我现在这里啊同学们,我这个偏量发生变化了呢?意味着什么?意味着咱们在整个这个环节中对吧?那应该是你这个数据啊,我采集到了这几现这个数据的变化,我现在应该采集到了,然后呢,我在这处理的时候,我是不是也处理完了呀,但是在咱们这里边没有写到我们这个o d base pro里边去,那你说问题出在哪了。啊,问题出在哪了?肯定出在这儿了呀,对不对,你看我根本就没有写在这后边,肯定你别看了先,对吧,你现在数据还没到这儿呢,你肯定在这里出问题了。
21:08
对吧,那么如果出问题的话,那就是哪块出问题了呢?是不是得来看,是不是我现在要看我现在这个SPA的程序啊对吧,其实这个问题啊,同学们很很容易对吧,很很容易很容易看,你们到时一看你马上就能看得出来,对吧?啊对不对,咱们当初再去做这个这个这个这个判断的时候,我是不是在这加了一个条件呀,对吧,是不是insert呀,哎,注意同学们对吧,就是你们呢,再去做的时候,可能啊,可能不是因为这会有问题,对吧,但是呢,你们会碰到各种各样问题,导致你们数据出不来啊,看不到效果,对吧?我希望大家什么的不要说诶我现在出这这这个东西查不到效果,你光在这查生非常不到这来查不到这的问题不在这儿,对吧,是不是咱们可能在我这个每一个环节出问题了呀,要学会分析这个过程对吧,那么咱们现在呢,在这里啊,注意啊,这块呢,我就简单改一改对吧,这个后面呢,我还会再改这个地方的,呃,我想如果不等于空,如果对这个不等于空,然后接下来等于我们这个因。
22:08
是的。或者。在那里或者对吧,来一个update。是吧,那是不是也可以啊,那我现在呢,把这个改完了,改完之后呢,咱们现在来重新取一下啊,来重新取一啊重新取一下我们现在这个程序是吧。把这个程重新写完之后呢,这个省份咱没改,这个不需要变,对吧,然后接下来来到哪呢?来到我们这里,直接呢,把这个省份名称再改一改,然后一提交来,注意看同学们,咱们现在对吧,它的一个变化对吧,这个呢是49827375。是不是变成七六了,然后接下来到这来看对吧,这个变成一了,说明咱们现在这个消息是不是拿到了,对吧,然后接下来,那咱们现在呢,在这也瞅一眼,这个数据是不是也拿到了,对吧?那么这些都拿到之后呢,那这是不是看最后一个了呀,对吧?如果说假如说同学们你现在啊,这里边这些东西都已经拿到了,然后结果这里没数据,那你说我去看谁是不是就到咱们这个process in里边,你看你保存的代码呀,对吧?来咱现在执行一下对吧,我这里是不是数据过来了对吧?就假如说我现在在这里,我看这都有数据了,短,那说明我现在这里边已经把它保存到哪了,诶已经已经把这个到到这了啊,移到这了,然后偏上也提交了啊,那说明啊,咱们就肯定你在保存的时候,如果你要看到数据的话,出问题了,对吧,那你到这里去看一看,你保存代码是不是有问题是吧?要注意啊,这个分析的过程很重要,好,那这样的话呢,咱们关于我这个省份啊,关于我这个省份这个维度的处理呢,就完事了啊,关于省份的维度的处理完事了,来大家。
24:00
看一看咱们现在我写的这段这个代码,这个难吗?如果让你们写的话,独立完成OK吗?其实你看代码一共70多行,估计二三十行是注释啊不是是是一个导包对吧,然后呢,再加注释未在二三十行,整个现在这个代码让你们来写怎么样?问题大吗?那如果说不读书的话,就默认没问题了,稍微准备准备下节课抽下找人上来啊,这是真写代码啊,这是真写代码是吧?来稍休一会儿。
我来说两句