00:00
好,那接下来呢,我们去做一个这个分词功能啊,那要写这个呃,自定义函数嘛,自定义udtf函数对吧,我们先得有这个分词的工具类啊,我们先写一个工具类包包裹一层啊。来,我们要去拿一个IKIK分子器,对吧。把这个依赖拿过来。那我们找一下这个依赖。好呃,然后接下来呢,我们就要去自己写这个内容了啊,写这个内容那首先呢,我们定义一个keyword u啊,一个工具类。好这边依赖呢,已经导好了,对吧。然后呢,到我们的优包下,然后创建一个。Key要求啊,那这个东西呢,我们想一下啊。Static返回值是什么呢?
01:02
我们想一下。这个地方的返回值应该是什么?就是我们要做切词输进来。一个字符串。然后我们要切词。所以说大家告诉我这个地方的返回值是什么?数组list。啊。都可以啊,都可以list更好一点,因为list呢更方便。那你你用数组也一样,其实都可以对吧,集合反正就是一个集合啊好,那我们就用list里边呢,放string,因为我们要做切词嘛,String啊呃,然后呢,Split我们就直接叫split了啊split keyor啊。哇,那参数就很简单,那就是three key word呗,对吧,参数肯定是一个关键词。
02:08
对吧,啊,肯定是一个关键词,好,那这边呢,我们肯定要创建集合,用于存放结果数据。存放结果数据对吧?好,那我们先把这个另一个list这个写好啊。对,那这个呢,我们的一个result。List,对吧,得到一个结果,最后呢,我们当前这个方法的返回值,那肯定是这个result list,接下来我们就要使用这个IK分词器,将我们输入的参数的一个切分,对吧,这是返回结果。过几个好,那在这里边呢,我们要用到IK分词器的时候,要用到这个啊,这个大家不熟,因为用过吗?要用到切词的时候它。
03:08
IK segment切片对吧?好,这个里边要一个什么呢?要一个reader还要一个。参数啊,就是configuration一个配置信息,或者说给一个简单的参数叫bird类型use smart,大家有印象的同学应该还记得对吧?还记得什么呢?在我们IK分词器当中,它有两种不同的规则,一个呢叫IK smart,还有一个叫IK max。是不是?让我看,还有多少人有这个印象?有两种规则呀。0.5啊,有一点点印象是吧。对,其实就是第二个参数smart和max world smart这种形式啊,它其实就是说一个字我只用一次。
04:04
每个字我都只用一次,我尽量的把这个词变得特别大。对吧,啊,只要你能前后的字能跟我当前这内部的东西能组成一个词,那我就把它放在一个词里边。对吧,啊,它是这样来来来做的啊,但是麦wad它不是麦克座呢,尽量的拆了散,只要你是词OK,那我就给你拆开,但是这个参数无所谓,更关键的是前面他要一个。要一个reader。对吧,但是我们有的是什么。Keyword是一个单词啊,是一个string类型,但是呢,它里边要一个reader,那肯定你想啊,这个东西肯定跟我们关键词有关系吧。肯定有关系,我们得想办法把它变成一个reader,没问题吧,因为这个叫reader input嘛,输入数据,那我们要这样对输入数据做切分,然后呢,后面的配置信息而已。
05:04
对吧,所以这块呢,我们得做一个什么事啊,Dream reader啊,把我们一个单词做成一个reader啊,然后呢,Keyword对吧,二加位得到一个reader,那A个参数就有了第二个,那第二个呢,无所谓,我们先写一个处吧,第二好再一个AK。得到一个这样对象,那我们想我们要的这一个的单词肯定在这了。对吧,在这里边我们就拿这个对象要一个看看啊,诶它里边呢,有next下一个下一个这种啊嗯,一个呢,它怎么样。异常对吧,这异常呢,我们可以在这边去抓一下,或者说这个作为工具类,我们之前说过工具类的异常呢,我们可以在这抛一下,对吧,可以在这抛一下啊好,CTRL加V到这个next,好我们肯定是下一个,下一个的next呢,我们就获取东西,那么我们单词就是它啊这个。
06:07
就是我们要的那个word啊,一个一个的单词,好,但是有个问题大家想啊,我们肯定得用循环来写吧。是不是得用循环来写?对吧,我们肯定要搞一个循环啊,因为这样的话,我只取出来一个词,它明显的就相当于一个叠加器啊,这种感觉对吧?啊,很像这种感觉啊,啊所以呢,咱们得用一个循环。啊,得用一个循环来写这个内容。没问题吧,好,那这边呢,我们可以写一个well well处这边有多种写法啊都可以对吧。好,里边呢,我们等会写break,他现在不写break的时候,这个地方怎么样?直接说这个语句是没有用的,对吧,接触不到的啊。呃,执行不到这个语句,那没关系,等会呢,我们肯定要退出,也不能这样死循环对吧,因为它有可能切完了,切完了之后呢,他肯定会none了,对吧,所以呢,很简单,我们做一个什么事呢?If个next,它于那。
07:16
不等于钠呢,我们把这个取出来。对吧,House如果说它等于闹呢,那我们可以break,跳出循环是吧?那就把单词取出来,取出来好以后接下来干什么事的。取出来以后,我们要的不是取出来,而是要将。数据添加到一盒当中。对吧?啊,添加到集合当中,这样好搞定了,对吧?啊,这个比较简单啊,就是说语法呢,它比较简单,只不过说对于大家来说不熟,因为没用过嘛,对吧?啊,所以呢,我也就没有去问一一点一点问大家,因为这个新的东西没必要问了,对吧,就介绍一套API,相当于啊,那我们可以把这个东西来测一下,看看我们写的对不对啊呃,那我们就叫split。
08:08
Keyword对吧,假如比方说我就叫上硅谷啊数据。像这。实时出仓OK吧,像这个会有异常对吧,刚才我们说了异常的话,我们就还是抛一下,我们自己做测试嘛,对吧,然后点下T把这个集合呢打印一下啊。好,那我们就看到这个词拆开了对吧?哎,商硅谷呢,像少和硅谷,他认硅谷这个词嘛,对吧,可能现在这样啊大树哎,他写的是大数,还不是数据对吧?项目啊知识实数仓啊,其挺奇怪的,他也不认识数仓对吧,他也不认识数仓啊,那其实这个地方呢,咱们可以改一下,把这个改成什么呢?For。
09:06
啊,如果是如果是force的话,那么它将用的是Maxwell的形式,对吧,Maxwell的形式啊,那我们看一下这个切出来词呢,就会更多一点。来看啊,它有这个大数数据,然后呢,数据项对吧,然后项目。啊,你看这个像是不是用了多次了,项目知识实时对吧,实数啊都有,然后呢,他还是不认识数仓,那这也没办法啊,因为这种东西相对来说比较新一点啊。好,这是我们所看到,那我们肯定用的这种这个尽量多的这个词给它拆出来,好,那这个就搞定了,对吧,这个是比较简单的一个工具类,只不过说大家对于这个API呢不熟而已啊工具类否。
我来说两句