00:00
同学们,接下来呢,我们来学习DSL语法,呃,之前呢,咱们演示的data frame的基本的操作,那么现在呢,我们来讲一下DL,所谓的DSL呢,是几个单词的一个缩写啊,它是一个特定领域的语言,通过这种语言呢,去对我们的数据进行操作,那么使用这样的语言呢,就没有必要呢,干嘛呢,去创建我们的那些什么view啊,视图之类的,不需要。因为它本身就能把data frame当成数据源啊,你就没有必要说我自己创建一个视图啊,创建一个表什么的来去读取数据了,就没有必要了啊,那咱们接着来看一看,首先咱们现在呢,创建一个data frame,诶,我这里是有的,所以呢,我们接着呢往下重看,我们写上啊,咱们叫做DF,诶那么在我当前的这个情况下,们这里呢,就会有我们的data frame对吧?诶就是这样的啊好,那我现在干嘛呢?Data frame点它有一个print,这个print叫printmer,我们这里呢,给他来回车,回车以后它会看见当前data frame当中的一个结构age和user name,它是一个long类型,它是一个string,然后这边呢是可以为空,它可以为空,对吧?哎,就这个意思,好,那么有了这样的事情之后,那么就说明data frame呢,我想做一些操作是没有问题的,那么这个时候我们来看一看,其实我们的data frame里面也会有很多的方法啊,那么方法当中什么distinct。
01:26
呀,比方说job呀,Join,包括map呀,包括一些我们的order啊,是不是感觉跟那个RDD很像,对吧?咱们之前学RDD的里面是不是有很多的算子,什么fielder啊,这些first是不是很像啊,大同小异嘛,你本来就是一种封装,那还说啥呢?不过我们现在要讲的呢,是数据的一种查询,所以呢,它里面其实是有一个select的,那么这个select呢,我们就可以写上了,比方说你刚才不说了吗?里面有一个结构嘛,这个结构当中不有个年龄嘛,诶那在这就写上一个年龄,然后呢,给他来啊,咱们来展示一下回车,回车以后你看我可以直接拿data frame来展示数据,诶把数据查到这个没有任何的问题啊,是一样的,所以啊,这种方式我们就称之为叫DSL语法。
02:14
好了,那么我们这里可以简单看一看啊,他说了只查看user name的一个属性,然后呢,我们再来往下看啊,往下看,那么下面呢,他说了查看username的列数据以及年龄加一,这句话是什么意思呢?就意味着我们在当前,比方说我的年龄啊,我想加上一个一,将查询结果呢,给它加上一个一,那比方说你当前是30 20 40,那我完全可以变成31 21和41呀,对吧?那所以呢,我这里就回车,回车以后发现不行。这咋了呢?这怎么就不行呢?你将我的查询结果加一,这个很简单一个事情啊,但是你往上找,你往上找了以后,你会发现它是这么提示的。他说,在给定的列当中,我们叫age和Una,他找不到或者说解决不了。这个AGE1。
03:06
他不,他就把这个A和那个一呀当成了一个查询的列名。对不对,所以在这种情况下,他发现这个列不存在,那所以就出现了问题,那该怎么办呀,对不对,我现在就想把咱们查询的结果加一,难道不让吗?其实是可以的,那么这个时候你需要去引用这个查询结果的数据,那么这个时候你直接用这种方式肯定是不行了,那么所以干嘛呢?我们应该写个Dollar符啊,你写个Dollar符的话,表示引用这个数据,所以呢,我们回车,回车以后大家会发现这个时候年龄就会加一,诶就是这个意思,所以啊之前不行,你加个刀乐符就可以,但是你加个刀乐符啊,会感觉什么呀,会感觉诶不太舒服,为啥呢?你得就等于是这是个列名,你这个Dollar表示引用的意思对不对?哎,就感觉不是很好,所以啊,其实我们的Spark呢,还提供了另外一种方式,大家看啊,来我们这里写上,咱们在这里呢写上它啊,来我们把这个去掉,我们可以用单引号的方式来代替它,就用单引号啊加。
04:13
一个我们的A级,然后呢,我们回车,回车以后你看是不是也一样啊,哎,其实完全相同,没有任何别的区别啊,所以只是写法和它的含义的变化,但是结果是完全一样的。好了,这里呢,我们给大家介绍一下,而且他说了,如果是我们有多个列的话,记住咱们是可以写多个列名的,那多个列的话,如果你想使用计算的话,每个列都需要使用Dollar for,你不能说只有一个列,你使用那不行,你每个列都是需要使用的啊,或者说我们使用这个单引号,这都可以啊好,接着往下吧,嗯,往下往下这边有一个别名啊,就是给你计算结果呢起个别名,这个就我们就不演示了啊,咱们接着往下,下面呢会有一个叫field,这个field呢,它可以把一些我们的数据给它过滤一下,那就类似于咱们circle当中那个where的感觉,对吧,那好,那这里呢,我们来给他操作一下,嗯。
05:06
咱们叫DF,点我们的field,然后呢,在这里写上一个单引号,然后写上一个A,如果我们大于什么呢?如果我们大于20的给它展现出来对吧?诶回车回车以后大于20的话,是不是30和40啊,你不要误会同学们啊,因为老师大于20是不是21也是吗?不是的,这个是我们加完一以后是21对不对,那原来不还是20嘛,所以这个不要误会啊,然后呢,接下来呢,他说了有一个是根据年龄分组啊,查看查数据的条数,这个叫这个其实在我们当中不也叫吗?所以呢,我们写上一个DF,点我们的,然后呢,写上一个咱们的年龄对吧,然后点我们的count,然后呢给他来回车,回车以后大家会发现在当前的时候它的年龄啊,因为咱们是用年龄分组嘛,那么咱们这没有相同的这个数据,所以说就是每个组里面是一个数字一对不对,所以啊这种方式我相信大家也能够明白吧,所以啊,咱们前面不说了吗,Data frame它。
06:07
点它里面会有大量的方法,像咱们之前的什么field啊,对不对,像咱们之前的group啊,这个咱们学RDD能够明白,我相信学到这应该也不是太困难吧,诶其实就是啊,跟那个早期的RD就很像了,用对象点方法的方式来实现一些数据的操作,这个我们称之为叫DSL,之前写蛇口文的咱们叫做蛇口一发,现在呢叫DSL1法,了解一下就可以啊。
我来说两句