00:00
那么Spark SQL语句也可以支持呃,Skime变更,比如说我们修改表结构啊,修改分区啊这些事儿啊,那这个我们也是快速的用它的语法来操作一遍啊,那么我们可以去去从命名表明可以添加字段。啊,也可以修改字段的类型啊,甚至可以修改一些表属性啊都可以,那对应的官方语法都在这里啊,那咱们跑几个呗,第一个呢,比如说咱们修改别名啊,这是一张表啊,我们看一下吧,So tables,呃。比如说这张表,我们把它改个名字啊,那语法就是out table都一样啊,Out table表明rename to,一个新的名字就行了,那我们来敲一下吧,Out table,然后这个表明rena库表明跟个二行吧,啊好。Show tables,那这个时候我们看到诶表名确实变了啊,这是改名,那除了改名之外,还可以去添加字段啊。
01:09
那这张表呢,我们先DC一下啊,这张是我们改完的表名吧,应该是啊是是同一张吧,啊,那对,是刚才这张表,那现在的字段是这样啊,有除了隐藏列之外,还有u u ID name price3个字段,那接下来呢,我们就是al table,这哎呀哎呀哎呀哎呀,不小心按到CTRL声音了,重新进来啊,没事啊。又是Spark。Show tables。好,这张表啊,啊DC好。是这个,那我们就out table。这根表,然后呢,语法是什么?直接at current就可以了啊,那我们直接拷贝过来呗,添加一个字段,它默认会拼接在最后面,这个字段叫remark好推车。
02:15
嗯。再来de sc一下,诶这个时候我们看到诶字段确实多了一个出来,对吧?好,那除了修改字段之外,我们还可以修改变列,这个其实跟汉服那些操作都基本一样的啊。呃,这边呢,我们修改列是修改它的什么类型,那首先第一个跟上什么原原来的列名老的名字,然后这边跟上它的什么新的名字,那同时你也可以指定它新的类型,对吧,既可以改名字也可以改类型的,好吧,那还是这个咱们直接来执行呗,啊de sc过了对吧,咱们重新de sc好对比一下啊,原来的UID是int,现在被成功改为了。
03:08
哎。啊。不行啊。嗯,我看啊big int不行,也就是说这个类型转失败了,对吧,那我们改这样吧,我改呃。因为你小的不能转成大的是吧,那那比如说我看转成string行不行啊。也不行。这个类型转换,那这样吧,咱们把。嗯。那我试试把这个price改成string吧啊。
04:04
这个也不能转,那我能转啥呀,我们目前的这几个类型也没什么好转的呀,呃,Mark。Mark string改成int应该也不太行啊,但这几个字段就有点鸡肋了,那能不能由大的转小的呢?啊,那比如说我我尝试的改成small in。也不可以改成是string也不可以,哎呀,类型不行,哎,算了,这是类型转换的一个限制啊,那为了方便,我还是改成in的吧,那而且我同时改个名字叫UUIDE行吗?这种行了吧。诶,啊。
05:00
啊,那这样就行了吧,我还是改成硬的,虽然执行成功了,等于什么都没做嘛,对不对,那我看看能不能改名字啊。呃,也不行,这这个就有点鸡肋了啊,说实话有点鸡肋了。好吧。那这个再多尝试吧,这个东西啊。那也可以修改一个属性,比如说我们将最大的这个。CAM。就保留的这个是对应的咱们那个清理策略啊,最大保留几次。那这个表属性我们改一下,我们之前没设是因为它默认就是啊,有个默认值啊,那现在我们是指定为十,你也可以指定为其他的啊,这个是一个out table。嗯。
06:00
这个就是来个int吧啊,省得里面跑不过去,那接下来也可以修改分区啊啊,那也可以查看查看,就是show partitions啊,那修改呢,就是al啊,我们先来看哪张表呢,这张表啊。So partition这张表。呃,看一下它的分区。这张表没有。哦对,我们查一吧,查一下一看有没有查一就有了吧,因为这张表数据被我们清空过啊,那咱们用一这张表啊,那这里也改成一吧啊,那现在的分区大家可以看到有这么几个分区啊,一级分区有这个12月19号啊HH小时分区有十十一十二啊这是当前分区,那么来尝试着修改一下啊,那就是什么呢?Out table啊也是out table语法加上表明,接下来是你要对分区做的一个操作,叭,如说我要删除分区,那这个时候呢,指定一个分区的值就可以了,表明那我们来。
07:10
嗯,Out table,然后呢,Drop partition啊,比如说咱们将幺零分区删了吧,啊,Drop partition,然后应该是要得有括号吧,啊DT等于。这个。然后逗号分格有多级分区,就用逗号分格来啊。HH等于,因为他们都字符串是对类型啊,等于幺零。好,执行完毕,我们再来受帕S看一下,诶,你发现这个幺零已经被成功给删掉了,这个就是修改分区啊。那还有一个东西叫存储过程,那应该大家都熟,如果你写过一些关系型数据库的存储过程你就知道了啊,那单词就是这个意思啊,存储过程,那么什么叫存储过程呢?你可以理解为什么呢?在视图大家总理解吧啊,数据库里面视图什么意思?
08:15
试图就相当于说把你的一一句搜狗操作,呃,将它记录下来。对吧,那比如说有个表A,呃,有一张表是表A,然后我将这个。啊,Count新啊from a把这个语句创建为一个视图。啊,那这个视图我叫A撇啊,那回头我们去s select a撇就等同于执行的这个circlel语句啊,就是这个,这个就是视图吗?能理解吧?那什么叫存储过程呢?存储过程有点像咱们写Java代码里边写什么方法,Java里面的一个方法,咱们是不是要定义一个方法名叭如说叫AA啊之后这里是不是可以传参数啊。
09:03
对不对,你咱们定义的这个方法不是可以定一些参数列表,完事之后这个方法里面是不是可以定义一些处理逻辑,还有返回值啊,对吧?当然这里也可以定义返回值,对不对啊,这个是Java,咱们去写定义一个方法,那么存储过程是针对于数据库这种circleq语法来讲啊,类似的啊,有点类似,我们只能说有点类似,因为数据库里面也有一个东西叫函数叫function啊,有点类似,但是function它限制比较多啊,比较多,那现在我们简单理解存储过程的意思啊,就是说什么呢?啊,你原先视图是一段circle口,那现在我可以多段多句蛇口啊,大家注意,那存储过程呢,我给也可以起个名字叭,如说我叫叫叫叫E,这个就类似于Java的方法,名了之后呢,我可以定义一个什么参数列表啊,222个一二个二啊,就跟我们定一个方法一样,诶,定义方法名,定义我的参数列表啊之后。
10:03
库呢,里边是一个执行逻辑,咱们的执行逻辑其实就是circle,我们可以把参数直接拿过来用啊,参数过当成一个变量啊,一个行参啊,这个行参可以拿过来用,之后呢,也可以定义我返回是什么样的东西,是什么样的结果集啊,这个就是一个存储过程,那这边呢,咱们说的是存储过程不需要咱们去写了,因为它官方提供了一些现有的存储过程可以给我们使用啊,你也可以理解为提供了一些特定的函数吧,啊,你简单粗略理解是可以这样啊,但本质还有点区别,那语法呢,就是用call啊,然后呢,System点,呃,它给到我们的存储过程名字,类似于Java里的方法名,接下来是不是传参呢?就类似Java方法的参数,对吧?那这它提供了哪一些呢?来拷贝这个链接啊。我们来打开这个页面,这个是,呃,你可以切换版本啊,不同版本可以去看。
11:04
这里切嘛,这里切好,那存储过程它分为两类,第一类给我们到的存储过程的功能啊,是关于提交的管理啊,对于我们是timeline上面的commit的一些管理啊,还有一些去优化表的一些啊存储过程方法,那我们可以干嘛呢?呃,可以查看一些commit,可以查看commit的原数据啊,可以回滚,可以创建safe point,删除safe point,回滚safe point,对吧?啊,也可以让啊数据触啊查看啊,执行compassion查看compassion,它把这些动作封装成的一些存储过程啊,那么就通过call的方式去做就可以了,那我们以一个最简单的案例受Miss来吧啊。呃,就是这么写的。前面固定的写一个Co,就表示调用这个存储过程啊,就执行呗,现在是Java执行这个方法了啊,然后这是存储过程的名称,那里边是参数列表,它这边定义好了,就这个存储过程要传这两参数,一个呢是表明一个是呃,查看的次数,Commit的次数,那我这边放了一个案例,是咱们自个儿的啊啊,咱们看一下这张表的。
12:23
一个提交情况来看一下啊,你看啊,这个就可以看到最近十次的提交啊,这个就是存储过程,不是让你去写啊,让你直接来用它封装好的一些功能啊,那有这么多功能啊,你根据需要去用了,咱们也不挨个去看啊。
我来说两句