00:00
我们已经了解了flink是什么,这只是我们学习过程的第一步,那接下来呢,更重要的那就是要理论联系实际,我们得上手写代码去看一看flink到底怎么用,怎么样去解决实际当中的问题。所以接下来我们就会用这样的一个文档,把所要介绍的所有的理论和代码分章节分门别类的梳理起来,那之前我们介绍的呢,就是第一章初始flink,接下来就是第二章flink的快速上升。在这一章当中呢,我们就会在开发环境里边直接去编写代码,写一个最简单的flink项目,实现零基础的快速上升啊,那这样一个简单项目呢,就是大名鼎鼎的在大数据处理领域里边非常有名的word count。所谓的词频统计,也就是给我们一个文档,我们要把里边每一个单词出现的频次,出现了几次统计出来啊,这个需求其实非常简单啊,在大数据领域就类似于一个hello word,那具体来说,我们用什么样的语言去实现具体的代码实现这样一个需求呢?啊,其实flink的底层它本身就是用Java来编写的啊,所以当然我们可以调用Java API去进行flink的开发。
01:18
那同时弗link给我们提供了完整的scla版的API,如果说对skyla这门语言有所了解,我们就会知道,啊,本身也是一门基于GVM的语言。而且可以说它跟Java是完全兼容的,在skyla里边我们可以直接调用Java里边的所有类库去进行使用,所以可以认为skyla呢是一个增强版的Java啊,那当然如果要是两者比较起来的话,Java可能使用的人会更多一点啊,的门槛更低一点,我们大家更熟悉一些,而skyla呢,它的好处就在于因为有更多的高级特性,所以实现相同的需求,它比Java版的代码要更加的简洁高效一点,我们可能使用很少量的代码就可以实现更复杂的功能。在我们的这门课程的学习过程当中呢,我们会选择更加简洁高效的scla API来进行讲解,所以接下来我们所有的代码都是使用scla语言实现。
02:18
当然了,可能有同学也知道,现在flink呢,也提供了另外一门非常火爆的编程语言对应的API,那就是Python。拍子满的API呢,呃,现在还不是特别的完善,但是也在逐步的发展过程当中啊,那相信不久的未来我们可能就会有更多的选择啊,用自己熟悉的语言,根据实际的需求,然后使用对应的API进行开发就可以了,所以flink开发的灵活度还是非常高的。那接下来呢,我们使用skyla语言进行开发,那往往还会选择一些常用的IDE工具,那我们这里边选择的就是大家非常熟悉的idea作为开发工具,另外呢,我们还使用了maven作为包管理工具,这都是在实际应用项目当中非常常见的一些配置。
03:08
所以这里我们可以总结一下当前我们整体所用的环境是什么样的啊,那首先呢,我这里说一下我的系统环境是WINDOWS10,这个其实并不重要啊,因为大家知道像Java啊这样的一些GM语言都是具有跨平台特性的啊,所以我们这里WINDOWS10或者WINDOWS11WINDOWS7啊,其实都没什么关系啊,那另外就是我们还需要提前安装JAVA8和skyla2.12啊,这里需要注意的就是Java的版本和skyla的版本是必要的,而且目前flink啊支持的像JAVA8的话,我们知道这是一个非常经典的稳定的版本啊,那flink也是推荐大家使用JAVA8或者JAVA11的,而skyla呢,现在最新的版本是2.13,但是flink最新支持到的版本就是2.12啊,所以我们这里边采用的是JAVA8和skyla2.12。
04:02
另外我们使用的IDE是idea,另外呢,我们还需要安装一些idea上的插件,比如maven GI,还有scale,那这些当然不是必要的啊,只是安装了之后,我们在开发测试的过程当中就会更加的方便一些。这里需要说明的一个就是说,诶,为什么我们这里同时需要Java和SKY拉呢?啊,那首先我们知道link底层本来就是用Java去编写的嘛啊,所以Java当然是必要的,另外呢,我们要开发调用skyla版本的API,所以skyla本身也是需要的。所以我们这门课程学习的过程当中,是首先需要有一定的Java和skyla语言基础的啊,那另外呢,我们这门课选择的flink的版本是1.13.0啊,那当然了,这是当时在编写资料的过程当中,当时的最新版本,那现在的话,我们知道flink最新版已经有了01:14,甚至01:15也已经在get上面有了RC版本啊,就是我们将要发布的选版本啊,所以当前的弗link发展变化还是非常快的,那整体来讲呢,1.13已经是一个非常稳定的,而且有非常多的新特性的一个版本,所以我们使用它也是完全没有问题的。
05:18
啊,那么准备工作我们都已经介绍完了,接下来我们关键的当然就是要真正的去创建一个项目,开始编写代码了,那首先我们应该打开idea。当然这里边迪尔的版本不一样,我们可能这个看到的界面不一样啊,我们直接去创建一个新的项目。你有一个project啊,那当前呢,我选择你有一个maven项,用ma作为我们当前的包管理工具,然后next。接下来呢啊,我们可以选择一下当前的group ID啊,一般情况我们这个是反写公司域名,所以我可以抗点at硅谷,然后接下来呢,ID就是我们当前的项目名称了啊,我这个就叫做flink tutor。
06:00
Flink教程,我们把它创建出来。然后接下来进来之后啊,首先我们应该看到的就是一个POM文件,POM文件我们知道其实对于一个maven项目而言,就相当于是一个基本的配置项了,这里边呢,有一些基本的项目信息,另外呢,我们还可以引入各种各样的依赖和插件。那对于我们当前这个flink项目而言,到底应该引入什么样的依赖和插件呢?呃,其实也非常简单,我们自然能够想到最直观的就是要引入flink相关的依赖嘛啊,所以这里边我们看就是把flink重点要引入的就是什么呢?Flink scale,然后后面还要加上对应的版本,另外还有一个叫做flink streaming scale,加上对应的版本,之前我们提到过flink主要是做流处理吧,实时的流处理,所以我们看到啊,它的核心组件一个就是flink什么什么,另外还有一个叫做flink streaming什么什么,当然这里边我们给的后缀是表示我们引入的是scla版本的API支持,那如果说要是Java版本的支持的话,我们也能想到自然就是flink Java,然后后边呢,后面我们看到跟着一个Dollar符,这个是什么东西呢?诶,这我们看到啊,其其实就是我们前面引入的一些proper一些特征特性,所谓的特征,其实我们看就。
07:22
像是一个全局变量一样,一般我们就是把一些版本号全部声明在上边,这样的话就方便我们后边做这个升级的时候啊,后边就相当于一改这里的版本啊,1.13升级成1.14,那后边所有的地方就全部都变了,我们这里边需要定义的这个版本,一个就是flink的版本,我们当前使用的是1.13,另外呢,Java的版本1.8,还有scla的版本2.12。所以我们看到这里边引入的其实这个啊,这个地方是scla的版本,也就是说我们这里引入的是flink scla2.12,然后下边本身这个组件,我们引入的这个库的版本是Flink.version1.13.0。
08:04
啊,同样下面这个flink STEM后边也要跟上2.12,然后下面flink的版本是1.13.0。最后我们还要引入的一个依赖呢,就是flink clients,这就是所谓的客户端啊,顾名思义,我们知道客户端嘛,就应该是我们在本地进行应用提交、测试运行的时候所需要的一个依赖组件啊,那如果说我们真正在集群环境里边提交一个应用的时候,其实是不需要有这样一个东西的。但是如果说我们在本地的集成开发环境里边,在IDE里边需要去提交测试的话,那就必须还要引入flink clients。其实在早些时候的flink版本里边啊,这个clients它是包含在Li streaming这样一个包里的啊,只不过呢,从01:11之后,他从streaming里边分离出来了,所以如果我们在idea里边啊,在集成开发环境里边,想要做本地测试提交的话,还需要引入这样一个包。另外我们多说一句,就是在01:11版本之后,其实就不需要再引入比方说像前面的link GALA这样一个基础的包了,只要引入flink streaming,如果在本地提交的话,再引入flink clients就可以。
09:18
那但是呢,对于早些时候的版本是需要同时引入flink scale和flink streaming scale,所以呃,我们会发现啊,这个不同的版本,它的这个对于依赖的配置可能会有所不同,为了避免混淆啊,我们干脆就把这三个统一都引入进来就完事了。啊,所以这个就比较简单一点啊,那把这些相关的内容都引入之后,接下来我们就可以直接去进行开发了,当然了这一部分我们就不用去很麻烦的一步一步手敲了,我直接把它做一个复制,然后。放到我们当前的po文件里边来就可以了,当然这里直接引入进来之后我们会看到啊,上面本身已经有了proper,所以这里边我们就不要重复去定义这样的标签,直接把它添加在上面就可以了。
10:08
这里引入相关组件之后,诶,我们可以直接微刷新一下。接下来我们就已经在dependenceies下边可以看到当前引入的flink scale2.12 flink streaming2.12,还有flink clients2.12,啊,这就是我们当前关于依赖的引入。有了这些准备工作,那接下来我们就可以去编写代码了啊,那当然了,我们知道在一个微文项目里边,代码源代码应该放在source me目录下边,一般我们是source me Java,但是我们现在要编写的是scla代码啊,诶,那当然了,我们就可以把这个Java目录换成scalela啊,当然了,我们会想到,因为skyla里边是兼容Java代码的嘛,假如说我们在一个项目里边既有skyla也有Java,那我不应该直接把这个Java目录删掉,我应该去新创建一个叫做scla的源代码目录,哎,所以接下来我们就main下边去new一个目录,就叫做scla。
11:03
当然了,直接创建出来之后,诶,我们会发现啊,这个skyla它本身并不像Java这样是蓝色的啊,就没有把它标注成为当前的源代码路径,那所以接下来呢,我们还需要mark as source route啊,这样的话,接下来我们就可以去添加对应的scalela源代码放在这个目录下面,假如说现在我们想要直接去创建一个scalela类的话,我们会发现啊,右键new的时候,这里只能new Java类,没有scalela类的选项啊,当然了,我们可以直接去你有一个file啊,把它直接命名为什么什么点scla,然后按照scla的语法规则去写,直接去写是可以的,但是呢,我们会想到,诶,既然有这个框架支持嘛,我们直接把对应的那些东西都配置好了之后,直接去像Java的类一样啊,直接去new一个SC类,这样不是会更加方便吗?诶,所以接下来呢,我们还可以添加一个框架支持,当然了,我们需要在idea里边先去安装好scalela插件,然后接下来我们可以右键当前的项目名称。
12:03
然后ADD frameworkport添加框架支持,我们可以把scla的框架支持直接引入进来啊,那当然了,这里边如果说我们没有去选择任何一个SC的SDK的话啊,这里边我们需要首先去选择一下,比如说诶,这里边我们system,这里边我安装的版本是2.12.11,哎,那我们可以直接把它选择上,然后OK。好,接下来的话,我们使用的scla的版本就是2.12了,OK,然后接下来我们可以看到啊,在下边这里这个external libraries下面就已经多出了skyla的SDK啊,那这样的话,我们当前的一些准备工作就做完了,这个时候如果再要去新建一个文件的话,我们看到就有了skyla class的这样一个选项。这就是关于我们整个项目的一些准备工作,接下来我们就可以去真正的上手写代码了。
我来说两句