温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
接下来给大家讲一下啊,用户的自定义函数,呃,什么叫自定义函数呢?就是说我们在实现SPA circle的代码当中,有的时候你写个circle啊,哎,你想做一些额外的功能补充,比方说当你查询到一个名称的时候,想给这个名称啊加点前缀对吧?或者把年龄呢给它加上一,加上二啊,或者说把那个薪水呢给它往上加一加这种功能的时候,我们有可能需要调用一些方法和函数。把这个呢,我们关掉啊,关掉然后呢,拷贝,拷贝以后我们写上一个零二,然后呢,写上一个我们叫udf啊就是这样,然后点击OK,那我现在呢,把这个去掉,前面这些咱们都不要啊,咱们都不要。好,去掉以后,那我把这个呢也去掉,我首先呢,先取得数据来Spark点我们的read.jason然后我们写上叫date,然后U的点杰森,好,我现在呢就直接得到了DRF,然后呢,我的DF点我们叫create or replace view,那现在呢,我们准备写circle文了,我们写上spark.circle然后在这里我们写上叫select,哎,我们叫age,然后逗号我们叫username,然后呢,From咱们的user,你这么写没有任何的问题,对不对,你这么写是对的,可是呀,我说了,我现在想给这个username呀加一个前缀。
01:29
对吧,诶比方说姓名啊什么的,我加个前缀,那这个怎么做呢?那是不是我们这么写就行了呢?比方说来啊,我们写上一个单引号,然后呢,在这里来,哎,我们写个单引号,然后写上一个name,加个前缀,咱们这么写行不行,咱们试一试啊来运行。运行之后看结果,我的目的很简单啊,就是当你查询出结果之后,把咱们的名称的前面加上一个前缀,我就希望达到一个这样的目的,那这个目的我们能不能实现呢?我们来看一看。
02:07
好,大家看一下,你会发现怎么了,你会发现失败了吧,为什么失败了,他这个地方什么as double as double,好像变成了一个我们的数字了。不是我想要的功能,对不对?年龄没变,但是呢,我们的这个位置发生了改变,那这怎么办呢?我就想给名称加个前缀,难道你不让吗?诶,其实不是,他可以,但是呢,就不能够用这种方式了,我能够自己声明个方法,比方说我们叫perfect name,好加一个前缀,所以我们这么写,如果你这么写的话,这个就是个函数,而这个函数是我们可以自己把它定义的,那怎么定义呢?大家看来Spark点它里面有个叫UDF,然后点我们叫register,这就是给它定义一个函数,这个定义函数的话,它的名字你就跟刚才一样就行了,那么你这个名字一样,你的功能该怎么做呢?诶,这个功能呢,你这样来,大家想想,首先你的这个函数当中是不是只需要一个参数啊,而且返回的结果应该也是个字符串吧,所以你就这么写。
03:20
来写个括号,然后写个我们的这个就叫name,诶写上它string,然后呢,来返回的结果也是一个函数啊,那么如果也是函数的话,我就写上一个叫name,然后再加上呃,我们的name,我就这么写对不对,那效果上是一样的呀,就是给每一个名称加个前缀嘛,那好,我看看这种方式行不行啊来。我们现在啊,就是把你自己定义的一个函数呢,诶放到了Spark当中,Spark呢,在使用Spark circle文的时候,就可以用到这个自己定义的函数,咱们就称之为叫udf用户自定义的函数,对吧?那好大家看一下行不行,可以吧,你是不是在张三李四王五的前面加上一个name冒号开头啊,就这个前缀嘛,所以这就是我们想要的功能,也是最基本的。
04:14
Udf函数,好吧。
我来说两句