00:00
那么剩下的就还是这个删除还有覆盖了,那删除了就delete flow啊,Delete flow,那么覆盖还是一个银色的overri,这个就语法跟我们这个have也好,MYSQL也好,没有太大区别,这个我们就快速过啊,那么今天快速的删一下这张表啊,我们先查一下啊。STEM这张表。哎呀,多打了一个符号啊。好,那么可以看到目前这张表就是有一个UUID为一的,对吧?我们要把它干掉啊,那我就delete from这张表VR啊,我们根据它的record,你看它的record key是什么?是UUID啊,值为一对不对?那VRUUID等于一啊,这样就行了。删完之后我们再来查一下这张表,数据就没了吧,那接下来我们要确认一个事儿,这张表是否真的被删了啊,这张表呃,我们是有有没有指定location啊,我们看一下吧,啊,忘了啊。
01:14
我们在建表的时候搜一下这张表明啊,我们并没有指定location,那应该在默认路径了,来,我们来load眼啊,C do mole Spark3.2在里面有一个Spark warehouse,这是默认的路径,对吧?那接下来是一个sparkdi,呃,然后呢,是这张表。这个什么这张表啊。再进来看一眼,诶,其实你看这个PA还在啊,Pocket还在,但是它生成了一个新的PA啊,这个应该是。刚刚执行的,他其实就将原来的数据标记为删除,并没有真正的删掉啊,那会,那那删掉数据怎么清理呢?啊,需要依赖于cleaner这么一个组件,它有对应的清理策略来清理过期的数据,好吧,这个只是说一下,它并不是立马删啊,不是立马删。
02:13
行,这是一个删除,那我们前面是组建字段对吧?啊。那也可以删这张表啊,也删了一下呗,既然都写了,我们过滤条件也可以是一个表达式的啊来。呃,ID有123都有,OK,那这样吧,呃,我们将偶数的删掉对吧,这个是将偶数的删掉对不对?模上二等于零嘛,啊那就删一下呗。那应该是ID为二的,这条数据会被删的。然后再查一下你你看就剩下一跟三了,二没了,好,那除了过滤条件为组件字段,你非组件字段也是可以的,就是很灵活,不一定说过滤条件一定要是组件啊,没有这个限制,呃,T1吧。
03:19
好。那我们将名字为A1的删掉,比如说我把A1下划线一给删了吧,啊,那文档改成跟我一致的啊,方便大家操作啊,好,Name大家知道这个name这个字段并不是record key,你看record key是什么ID?也是可以执行的。但是我们建议你删的时候过滤条件最好是record key,因为它有索引呢,这样效率高啊。嗯,我看看。那再查一下吧。
04:07
哎,你看那个A1下划线一就不见了啊。这条数据就被干掉了啊。好,这个是一个删除,那覆盖呢,就是一个银色的override啊,那这张表咱们刚才也查过了吧,来这个都很简单,就是一个简单语法啊,那现在有数据呗,啊是这样子的啊,长这样,截个图放这儿,接下来我们overri,然后呢,用这么一条数据把它覆盖掉,整体覆盖啊。看效果。好,执行成功之后,我们再select一下。那你看现在就只剩什么,只剩我们插入的这条数据了,原先的这个什么,这三条数据就不见了,而是最新的这条数据啊,被覆盖了啊,没覆盖了,行,这个就是我们的overri,呃,这个下面。
05:04
嗯,顺顺道执行一下吧,这个肯定也直接覆盖不看了啊,另外呢,我们也如果我的表是个分区表啊,你是希望使用动态分区的方式来覆盖啊也可以。比如说这张是个分区表,对不对啊,那这个时候呢,你可以。他会根据咱们这个。最后面的字段顺序作为分区字段去匹配啊,这个就匹配上DT,这个就匹配上HH对不对,这张表有两级分区嘛。那我们用表一吧,原表那个数据被我干掉了,已经啊。这张表看一眼诶,不用我们HDFS看吧,就这张表啊,现在一级分区1209啊,然后呢,HH10啊。有这么一个数据。那查一下呗。
06:00
Select from j where dt等于。等于什么呀?呃。啊,算了,我就不要飞了,我自己肉眼判断吧,啊,那你看这个有没有幺零的。哦,幺零的被我删了是吧。那这样咱们覆盖,呃,覆盖幺幺的吧,那这样就很明显了吧,那你看我现在是不是有个幺幺的,呃,12月9号11点的这条数据是这样子对不对。那我要把它覆盖掉啊,覆盖掉那就执行就可以了。它会自动匹配到对应的分区啊,也就是说你覆盖的时候不要指定分区,你把分区字段的只给呃,对应的有就可以了。之后呢,咱们再来查的话,这条数据已经是什么。
07:05
变了,变成这样子啊,原先是这样,现在变成了这个样子。好,这是一个覆盖,另外你也可以指定分区啊,在插入的时候啊,你指定要覆盖的是哪一个分区,那这样的话,你后边的这个临时结果集就不用再带上分区字段了啊,这就两种用法啊,一个动态一个静态啊,这个大家自己去玩就行了。
我来说两句