00:00
对flink有了基本的了解,那接下来当然就是要上手写代码了,直接来看看代码怎么去书写。在flink的底层,它的代码是用Java来编写的,那么在上层供我们开发人员调用的API呢?同时提供了Java和SKY2套API。在这本书里边,我们所有的代码事例将全部用Java来进行实现,那在后续的一些具体的项目应用当中,如果说我们有需要的话,也可以使用skyla的API,在flink的官网上,这两套API都是同时给列举出来的,我们有需要的话直接看官网,非常容易可以进行这样的一个转换啊。那接下来我们如果要来写flink相关的项目代码的话,我们还需要有一个IDE这样的一个集成开发环境,这里我们使用的就是大家非常熟悉的idea作为开发工具,那么呃,在实际项目当中,我们还需要有这个包管理工具,那这里我们使用的也是大家非常熟悉的mavo啊,接下来我们其实要给大家写一个非常简单的flink项目,实现零基础快速上手啊,那这个项目当然就是大数据领域非常著名的world count啊,类似于就是我们学习。
01:20
一门新的编程语言时候的。Hard word一样的一个代码啊,就是要做一个分词,然后进行词词频统计这样一个需求。在这之前,我们还是先来看一看当前我们使用的开发环境和所有的工具到底有哪些。在这里我们先说一下当前系统环境,我这里用的开发环境啊,系统是。WINDOWS10,然后呢,有一个基本的要求,就是需要提前安装Java吧,我们这里Java的版本用的是JAVA8啊,那大家都知道,对于Java而言,八是一个非常经典也是非常稳定的版本,后续在做很多项目开发和这个工具应用的时候,往往还是基于它的,而且在JAVA8里边也有了像拉姆达表达式啊这样一些比较好用的功能,函数式编程语言里面的一些功能,所以JAVA8是比较符合我们需求的。呃,另外IDE使用的是I idea,然后安装了idea之后呢,还需要再安装一些插件,比如说微和getate,这个主要是用来方便我们做一些项目依赖的管理和呃做这个代码。
02:32
历史版本的一个管理,如果不安装的话,其实也是可以的啊,那有了这些基本的安装配置之后,接下来我们就可以正式开始写代码了,那在这个过程当中我们也可以看到,由于在这本书里边所有的代码都是用Java来编写的,那么对于大家的要求就是还需要有一定的Java语言基础,如果说对于Java的语法还不太熟悉的话,希望我们可以先去把Java相关的一些基本知识做一个基本的了解,然后另外一个就是我们所选取的flink版本。
03:09
全部本书当中所有的程序都使用的是基于。当前最新的版本flink01:13点零啊,那这就是我们整个。基本的一些环境的说明,然后接下来我们就可以真正的打开idea去创建项目了。Idea。接下来我们直接new一个project。这里我们使用的maven作为当前的包管理工具,所以我们创建的其实是一个maven项。呃,我们这里可以选择一下artifact group ID和artifact ID,我们这里group ID一般给的是呃,公司域名的反写啊,我们可以写一个放点硅谷。Artif ID一般情况跟我们的项目的名称是一致的,这里我们的项目直接就可以叫做flink。
04:06
也就是说,我们当前要做的项目是一个flink的教程,这样的话,我们把它设置好,Finish。当前项目创建出来。这样的话,我们可以看到,首先打开的是一个微项目的po文件啊,这个po文件里边就有这个项目的一些基本信息,然后接下来我们其实首先是要在这里边去引入一些相关的依赖啊,我们要用到的一些东西要先打包打进来,放进来。这里边我们首先需要的有哪些依赖呢?可以看一下文档当中给我们介绍的这些内容啊,这里我们引入的依赖主要就是有flink相关的依赖啊,另外当然还涉及到日志管理相关的内容的话,我们引入的是self for g和log for g这些相应的一些依赖,在这之前是有一部分practice,也就是我们所谓的属性的配置,这主要是为了啊大家可以看到这其实跟。
05:08
我们对于一个变量的声明是一样的,如果在前面我们声明了这样的一个property的话,在后边就可以对应的这个版本信息可以直接用这个变量来取代了。所以如果有这样统一的一个。属性的声明,那么接下来我们在后面做项目管理的时候就会非常的方便,否则的话我们可能flink版本发生了变化,后边每一处出现flink版本的地方都要进行更改,现在的话这就没关系了,相当于是全局的把这个变量改一下就可以了啊,那当前我们的flink版本用到的是01:13点零,这是Flink.version那么java.version是1.8啊,这个主要是为了后边呃,有一些扩展的组件需要指明Java版本的时候,方便来来把它引入啊,这里其实我们没有用到,另外还有就是scla相关的版本,Scla b re version,这个主要是因为。
06:06
在flink的底层,它本身是用Java写的,但是呢,它也用到了一些skyla相关的组件,比如说像阿卡啊,就是来实现底层的分布式通信的,那么阿卡本身是用scalela来开发的,那所以在对于弗Li而言,它也必须要指明。当前skyla的版本信息啊,我们现在用到的这个版本呢,都是2.12 skyla相关的版本是2.12。另外还有就是关于self four g的一个版本啊,用到的是1.7.330,这是我们引入的相关的属性,那后边呢,就要引入flink相关依赖了,这是我们写flink程序所必须的,主要引入的就两个包,一个是flink-Java,另外一个是flink streaming Java,后面我们看到还有一个scalela的版本信息啊,所以这里面其实本来应该是下划线2.12。
07:05
这里边我们是直接用前面定义的property来替代了,然后对应的组件后边给的一个version呢,就是我们所用的flink的version。啊,这里边第三个还用到了另外的一个组件,那就是所谓的flink clients,就是客户端,如果我们想要用一些特别的功能的话啊,做一些提交,做一些其他的一些。管理方面的需求的话,那么这里边可以把它也作为一个引入,如果只是开发一个程序的话,Flink clients是可以不引入的。这是关于flink相关的,那另外还有一些就是日志管理了,我们引入的是sell for GA API for g log for g12啊,那另外还有就是log for g to self for g的一个转换这样的一个组件啊,这样的话就可以应用我们日志管理相关的内容了。这里我们可以直接把这一部分copy到po文件里。
08:07
直接把它引入。我们打开了自动的import,这样的话接下来只要一刷新,我们就可以在dependency下边看到相关的依赖都已经引入进来了。好,有了这些之后啊,那为我们既然提到了要用log for g来进行日志管理,那对应的我们还应该去添加一个log for g.proper文件啊,那所以这一部分内容我们也是需要加上的。文件我们可以直接放在当前的resources目录下边啊,所有的配置文件我们可以放在这里。New,一个fire。所有的配置项我们直接写入。代表了我们对于日志的一些设定。
09:00
基本的配置就已经完成了,接下来我们就可以进行核心的工作,往这个框架里边去填充flink代码了。我们的代码当然应该放在项目下边source may Java目录下啊,在这里我们可以直接右建,去新建相关的Java类写代码就可以了。我们现在要想实现的功能呢,主要是一个word countt,这前面我们提到过,相当于就是大数据处理领域里边的一个最入门最基本的程序,相当于编程语言里边的hard word一样,它主要的功能就是直接给我们一组一组句子或者是一些单词,我们要把里边的所有单词都提取出来,统计每一个单词出现的次数,然后把每一个单词出现的次数作为结果输出出来,这就是所谓的word count所要实现的需求。那么这样一个代码我们应该怎么样去做呢?啊,我为了实现这样一个需求,我们先在。
10:00
生前的Java目录下边新建一个包,我们直接把它命名为加上繁写的域名。com.at硅谷有word count,我们简写就叫WC,相关的linknk Java代码我都放在这个包下边,我们一目了然,可以看到实现的就是word count这样一个需求。那对于workout而言,我们会想到根据数据来源的不同,其实是可以分成两类的。一种,那当然就是所有的数据都已经到齐了,比如说我们想要统计一篇文章当中每一个词出现的瓷瓶,那当然就是说这个文章都已经拿过来了啊,那接下来我们就把这文章扫描一遍,把每个单词提取出来,统计数量就可以了。那另外还有一个需求呢,可能我们当前的这个数据是实时发生的,比如说我们可能要统计的是当前的微博啊,微博里边不停的有新的内容消息产生出来,我们要统计当前的热词到底是什么。
11:04
啊,那对于这样的一个需求,可能就没有办法直接拿到所有的数据,而必须是来一条数据,我们马上就要统计一下,输出一个当前最新的结果,能够看得出来,这就是批处理和流处理两种不同的场景。啊,那当然,对于弗link而言,它的底层本身就是基于流处理这样一个架构而设计的,当然我们更擅长处理的应该是流数据,而对于批数据呢,我们会想到在实际应用场景里边,它相对来讲是更简单的一种类型。Link,它是流批一体,同样可以用流处理的方式,把批数据当成有界流来进行处理啊,所以对于批处理其实是更简单的。所以首先接下来我们先来讲一讲怎么做一个批处理work程序。
我来说两句