![Flink与Kylin深度实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/467/37323467/b_37323467.jpg)
上QQ阅读APP看书,第一时间看更新
2.6 入门案例
如前所述,Flink的任务可以运行在各种模式下,每种模式都有不同的应用场景,那么接下来开始学习Flink编程,主要包括批量数据处理和实时数据处理。图2-3所示为对Flink编程进行的分类。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/37_01.jpg?sign=1739593933-2XOHJsOKpczLjLwKgazLD7dj5X1lkSyn-0-0c59c84911b70ef381f4bd90ca533b53)
●图2-3 Flink编程分类
2.6.1 实时处理程序实现
编写Flink代码统计Socket中接收到的每个单词出现的次数。这里使用IntelliJ IDEA开发工具,在其中创建Maven的Java工程,然后在工程的pom.xml中添加jar包的坐标依赖。
(1)创建Maven工程,导入jar包
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/37_02.jpg?sign=1739593933-4JADZ2V2yetPHzKMEhZkUYWddTYOFCup-0-3b9231cda6e550e79b75aa2e7be08871)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/38_01.jpg?sign=1739593933-PDOXZDM0WdEqG2kga6FCIKFYORMDwGiU-0-2be4fe3f0f44547feef29e4d83be54e9)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/39_01.jpg?sign=1739593933-IhJy8T4mV5k85qOdXuXDR1pM8qTfl5A0-0-75cb72e4e4b3330deacae37232ad6555)
(2)编写Flink代码统计Socket中的单词数量
接收Socket单词数据,然后对数据进行统计。代码如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/39_02.jpg?sign=1739593933-a8lleKJK6iM5iyOSqbIbYUzVHyeskRGt-0-d48d0b5d1c706ffed9d2c281bc79f985)
(3)打包上传到服务器
将程序打包后上传到node01服务器,然后在各种模式下运行程序。
(4)standalone模式下运行程序
在node01上执行以下命令启动Flink集群。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_01.jpg?sign=1739593933-x94vh5bvMoiSXBQ3tyK4cuUHGkirmHjH-0-08d3d806217eb98ede882d413370c509)
启动node01的Socket服务。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_02.jpg?sign=1739593933-7poc5ipzKaDexejPKpvq2WtUFbXmnoMG-0-ff91e0980ce24cddafee1cd1c21887a1)
将打包好的jar包上传到node01服务器的/kkb路径下,才能提交任务。注意,打包前需要在pom.xml中添加打包插件,且集群已有代码需要将“scope”设置为“provided”。在pom.xml中将关于Flink的jar包“scope”设置为“provided”,如图2-4所示。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_03.jpg?sign=1739593933-ZJy7lIfPb6R9TuhZepX3DO2SzRQYpaZG-0-d64e6202ed936d72b038e1ac93a2ec4b)
●图2-4 打包级别调整
jar-with-dependencies的jar包上传到/kkb路径后,需要的jar包如图2-5所示。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_04.jpg?sign=1739593933-dsjM3Za13u9JHmOjqShe3LzBWUiV0xAc-0-bab1f0789bc2a707f8d8e6954f1eaadd)
●图2-5 打包之后的jar包
在node01上执行以下命令提交任务。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_05.jpg?sign=1739593933-ySy8AxDms9xF3Yrgox4kYdCWAskebcSu-0-2cfa2bdfc5f0a40ef50a68cbb3ee4ce1)
查看运行结果。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/41_01.jpg?sign=1739593933-CJDPl2j6bQhvYPWjq7XPhPteLvL4DmB7-0-3f2fb6c4597a4736cd866a6c1705d763)
运行结果中有很多文件,选择查看有内容的文件即可,如图2-6所示。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/41_02.jpg?sign=1739593933-8dr1fFempDGEm6zCwV6ZiVxaqpdnAcbe-0-dc3307a1d207ed4f030adf4b9bf40c47)
●图2-6 查看输出日志
注意:
结果保存在以“.out”结尾的文件中,哪个文件中有数据就查看哪个文件。
2.6.2 离线批量处理程序实现
本节完成count.txt文件的处理,实现单词计数。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/41_03.jpg?sign=1739593933-Cub8hr5ewDGQMOwOmC4ErLwP4gTe9md4-0-78b237b5b21f45b8a13df27ec579855f)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/42_01.jpg?sign=1739593933-2noqD4wldSI624UKFTfKgZvzscTHe9Jd-0-d3660ae0999918424371173c5697ea78)