![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=1738839141-oHg26DTk4ipsUafh8xCU5LdunTGm4S2m-0-99f9cfb655b7441afd5b999ed49acff0)
●图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=1738839141-pfkWVAN8yHue7IjTLfgq6qsvikioFTyu-0-044429ab5c2a9c3cf542449a113677b4)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/38_01.jpg?sign=1738839141-lDAEF2LZ695PoHdR3Q9WPq6T3H6yUn7h-0-fd13aa65e60962f501c0f467067ef221)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/39_01.jpg?sign=1738839141-EmvNLKZCa46ZX8woxoxLVJQVJoQWXIGB-0-eb61985f64708a6250b5f2fe45484c9c)
(2)编写Flink代码统计Socket中的单词数量
接收Socket单词数据,然后对数据进行统计。代码如下。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/39_02.jpg?sign=1738839141-EPQhYODf0PAOvQUWdbK5MWfug7zgmv9s-0-9a509a336fb525020cd3c72f605ade5b)
(3)打包上传到服务器
将程序打包后上传到node01服务器,然后在各种模式下运行程序。
(4)standalone模式下运行程序
在node01上执行以下命令启动Flink集群。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_01.jpg?sign=1738839141-IdMZ0ONyvMSxDHWteAQwp2MDsb6G4gbi-0-54f5d6b47c409b81f89a93dbb327d61d)
启动node01的Socket服务。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_02.jpg?sign=1738839141-ZRhQnA8UWSToRWLWGeBEUVkN4ehQZuvI-0-b0c2e7d1b1db8a5c34005f6bbb4266f2)
将打包好的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=1738839141-3lLBM4caCIBsWuPfC8pKYerDmDvzRS29-0-957cf26eea74b74ddc1687bdd2c8b553)
●图2-4 打包级别调整
jar-with-dependencies的jar包上传到/kkb路径后,需要的jar包如图2-5所示。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_04.jpg?sign=1738839141-EnhxvNqdtzTNhWzMPuOnl6GJBMlGeOoj-0-c1ecb54070fcf643f62337b04cb2dd6c)
●图2-5 打包之后的jar包
在node01上执行以下命令提交任务。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/40_05.jpg?sign=1738839141-BudfVN5zzAZGLSuPabIkNsq2cQQYnIzu-0-a527fa0f56b0d95cb5fa3af5ee60e496)
查看运行结果。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/41_01.jpg?sign=1738839141-3GRbDmdB0CzQy8YqWQc6PJNXR7Fj0E5P-0-7465fc3d428b12460dca2091e756ee07)
运行结果中有很多文件,选择查看有内容的文件即可,如图2-6所示。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/41_02.jpg?sign=1738839141-aLayCyBvwJeFkyBzKhlkEqzqRicBzmZw-0-6c15d4008d325cb1ecbc1fa72e3125bf)
●图2-6 查看输出日志
注意:
结果保存在以“.out”结尾的文件中,哪个文件中有数据就查看哪个文件。
2.6.2 离线批量处理程序实现
本节完成count.txt文件的处理,实现单词计数。
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/41_03.jpg?sign=1738839141-vQuE4wnh0NoDIPRr4RiqvOhN3gQSvCLp-0-46e1336ddee0a557a7ed29fbbb6d9bd2)
![](https://epubservercos.yuewen.com/B89B1D/19773740901350206/epubprivate/OEBPS/Images/42_01.jpg?sign=1738839141-kOaXa4Y3KPuleNAt4LynLQJLdh6cAVja-0-7629bff547f5804ac9f74a0cd6f33dee)