00:00
在具体调用API之前呢,我们先来做一点准备工作,因为我们知道在实际的项目需求当中,我们一般不可能碰到非常简单的输入数据类型啊,就比方说就是一串字符串,让我们去做这个呃,字符串的字符的统计,Word count,或者说直接就给我们12341串整数去做一个叠加,不会有这样简单的应用需求,那往往我们要处理的数据呢?它可能是从日志里边提取出来的,比较复杂的,有多个字段的这样的数据类型,所以说我们一般情况需要把它包装成一个元组类型,或者是一个所谓的简单对象,就是剖类型。方便以后后边的处理和转换啊,那这里我们举一个具体的例子,比如说在电商网网站当中,一般我们都要收集用户的一些访问数据啊,那对于这个用户的访问数据呢,我们可以简单的把它做一个包装提取。
01:03
抽象成一个三元组啊,那或者说这里边我们把三个字段列出来之后,也可以直接把它包装成一个po类,比方说我们就叫做这里边的三个字段,一个是user,就是用户的名,名字、名称或者说ID,那么哪个用户,然后他访问了哪个页面啊,在电商网站里边,我们每一个商品都有一个页面,那这就相当于是用户浏览了某个商品。那么商品的话应该也有一个URL,这就是访问的页面的名称,然后另外还有一个就是访问的时间戳,这都应该是写在这一条日志里边,相关的数据,我们可以把它包装成一个po。我们先,哎把里边把这一部分分配出来。啊,那这一部分的话,我们就直接可以去创建一个新的包,之前我们是work count啊,现在的话因为后面代码比较多,所以我们可以按照章节去对代码做一个划分啊,这样会比较简单一点,后面比较好找。
02:08
好,那么我们还是反写域名送给艾特硅谷A。这个就叫做AFTER05。然后接下来在里边去新建一个class,叫做E。那么里面我们需要去定义对应的字段。首先public user。是用户名,然后另外还有URL。这是访问的链接,访问的页面的名称,最后还有一个是仿整形的一个时间戳,我们把它写好。定义好了字段之后,对于弗link而言,如果说能够正确解析这样一个po类型的话,它要求我们必须要提供一个构造方法,这个构造方法必须得是空餐的,所以这里边我们一个无参的构造方法,当然了,为了方便后边我们去直接传入参数,构建它的对象,我们还可以把参数的构造方法也写出来啊,这个在集成开发环境里面都非常简单啊,快速的用快捷键把它调出来就可以了。另外还有一个比较好的编程实践,就是我们可以把to string方法也做一个重写。
03:28
To润方法里边把所有字段包含进去,呃,这里我们还可以做一些更改,比如说。Time本身它是一个长整形的数字,那如果说我们想看,当这个时间看的更加的明显的话,可以把它做一个对应的解析,最简单的解析方式当然就是直接去创建一个time step,用Java CQ里边的time step把它包装起来。把对应的时间戳传进去,然后呃。
04:00
接下来这个自动调用一个它的to string方法啊,把它转换成字符串,某年某月某日十分秒打印出来就可以了,这就是我们基本的一个准备,把对应的po类定义出来,这里大家需要注意这个event啊,在Java里边,如果说想要用这样的po类型的话,有这样的几个要求,我们可以看一下。首先就是类必须是公有的public,另外呢,它必须得有一个无参的构造方法。然后所有的属性也必须是public,必须是公有的,那另外就是所有属性类型必须是可以序列化的,我们这里面都是一些基本的这个数据类型,所以就存在这个问题啊,这里是需要注意。这样一些特点,呃,在flink当中呢,会把这样的类作为一种特殊的po数据类型来对待啊,然后呢,它有了这些基本的要求之后,就可以很方便的进行数据的解析和序列化。
05:04
这里我们定义的这个event在后面的代码里面会频繁的使用,所以呢,呃,我们这里就把它统一的放在这里,后边用到的时候直接引入就可以了。
我来说两句