00:00
那接下来我们了解一下怎么来做一个数据的更新,那其实更新很简单,我们直接用一个插入操作就可以了啊,他如果判断record key存在,那么就相当于说会做一个更新了啊,因为我们说的护底是什么upset。对吧,依赖于索引,如果我判断存在,那我就是做更新操作,Update,对,如果不存在,那我就是做insert操作,对吧?就这么简单啊好,那这个时候我们可以再一次的生成几条数据啊,然后呢,呃,还是一样通过DFRA的方式往里写,那这个时候注意了,咱们的这个写模式要改为end,其他一模一样都不变,跟我们前面插入的都一样啊啊。那这个我们就直接拷贝就行了。那完事之后呢?
01:00
就可以去做一个查询了,那么大家注意保存模式通常是就是a pen的啊,不要写overri啊,除非是第一次见表啊,第一次见表咱们还是用overright保险一点啊,或者说你你有需求你就overright,没有的话咱们还是openend啊好。那这个时候呢,我们再来查一下吧,嗯,那我想想怎么样,我们再查询一下啊。呃,我们就查一个commit time就好了啊,就这个语句啊,Commit time,还有record key,还有分区路径,还有几个字段。缩小一点。嗯,我看一下啊,前面的是多少啊,什么38342对吧,这个也是38342。
02:01
呃。都一样。我们先看一下这边的变化吧,啊呃,可能数据没有在对应的这个分区里有体现啊,你看诶这个有啊,这是我们刚才这个路径,呃,这个表里面的这个分区,这个分区这个分区下面之前呢,只有上面这一个什么38342,那现在多了一个什么呢。这个这个时间点的对吧,第二次commit,那我们知道上面这个。呃,是属于。这个是fire ID,你看是一样对不对,也就是说这两个文件属于同一个文件组,但是是不同的啊,不同的file,那你看这个token就不一样了啊,然后这个提交时间也不一样了。也就是说前面这个已经是旧的了,这个是新的了。
03:04
那我看看我怎么把它查出来啊,我刚才这个语句是不是有过滤条件呢?From。嗯。那这样吧,瘦20。那一样的话哦,对,我们现在不是流式处理对吧,所以这个DF可能要重新加载一下啊,这是之前加载的DF,我们虽然数据已经更新了护底表,但是这个DF还是老的,老的话那也简单,我这样拷贝过来啊。我重新加载一个DF,我叫DF1啊,然后呢,路径还是这个表明改一下可以吧啊。
04:04
这样的话就OK了嘛。行,来来。这样我重新创建了一个读取的DF,那完事之后咱们还是来查询一下啊,查询我往上翻。查询一个。有time record key,还有什么分区这几个字段的吧啊,然后表明改一下啊,带个一啊受我就不限制了,好回车。嗯。嗯,哦,还是有个地方写错了,我们这个地方写错了啊,这个这这这个地方这个DF忘了改了。哎呀。D1对吧,应该是这样子,重新执行行不行,应该可以吧,可以覆盖嘛,好行啊,少改了一个地方啊,就这个创建的这个DF要也改成对应的这个DF啊呃,执行一下刚才的查询。
05:12
这一次应该没问题,那么大家可以看到现在的commitm time有什么了,有老的这个什么38342,也有新的这个57670啊,那是不是跟这个一样的,对吧?因为它拼接的这个实例时间其实就是呃,我们的commitm t啊这个地方大家就看得懂啊,那record k是UUID啊生成的,咱们就不用去看了啊行。那接下来我们顺便来玩一下时间旅行呗,对吧?啊,时间旅行,呃,旅行,我们往回旅行吧。查询里面有个时间旅行,那时间旅行有几种写法啊,就是你去read的时候就重新去创建啊,重新去创建这个DF,然后呢,你指定一个as of instant,然后格式有三种写法,第一种呢,是把全量的时间戳拼上来,就是年月日。
06:13
呃,十分秒毫秒啊,就是说把完整的时间戳写上去,指定的某一个时间,那么你也可以写,呃,为了方便你也可以写成这样子啊,就是。正规的一个格式啊,正规的一个日期格式,有连接符啊,还可以写什么呢?只写一个年月日,这个就表示00:00啊,那现在我的话肯定是要用这个完整的这个来写吧,来我先构造一下啊,来拿过来。好,那这个这里的这个。Time,我要改成我自个儿了,因为我现在只有两个吧,那我就改成老的这个吧。这个38342啊,我旅行回去啊。
07:03
好,然后漏完之后是不是可以生成一个DF啊。对吧。嗯,Spark点。拷贝诶拿过来,我这个叫二吧,二,然后呢,来一个这个二。二好吧,都改成二,那这个就是我的新的这么一个时间旅行的这张表啊,我们现在实际在timeline上面啊,这是我们的tanline,现在有两个两个instant啊,这个instant就是这个什么什么,呃,38342啊,这个时候的这个,另外一个就是我新的一批数据插入的那个什么五,呃,多少多少多少,对吧,那我们刚才也试了,呃,通过这个方式重新加载一遍,我们能查查找到全量最新的,那现在我希望恢复到某一个instant的对应的那个时刻的快照,其实这个时间旅行就是查看某一个历史快照嘛,对吧,就像你翻开你的相册啊,去看你年轻时候的样子啊一样啊,当时是什么样啊,当时的数据长什么样,那现在我就指定为老的这个时间啊。
08:25
好,我试一下,完了之后咱们直接查询这个表二就可以了呗,我再往上翻,翻到一个表二吧。呃,一改成二好回车,那么大家看现在一共也就只有十条数据,当时我们第一次是不是插入十条,第二次又插了十条,对吧?第二次的十条可能有更新,有新插入的,那你看现在我也没有什么过滤条件啊,一共只有什么这十条,而且这个comm time都是当时的,这个就是所谓的时间旅行啊,就跟你重返18岁一样,对吧?啊,比如说今年你30了,你重返18岁啊,你18岁时候的样子啊,这个就是你18岁时候的样子,好,这个就简单了啊。
我来说两句