使用Maven構建Flink第一個項目
- 2019 年 10 月 6 日
- 筆記
使用Maven構建Flink第一個項目
0.準備工作
下載Flink並運行!
1.IDEA創建Maven項目
點擊左上角File->new Project->後面直接點擊下一步->GroupID與artifactId、version隨便填寫->填寫項目名稱,點擊完成。
注意:Maven打包後的jar包名字就是我們artifactId-version.jar格式,可以適當根據喜好在pom.xml修改。
pom.xml修改:
<dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <!--2.11為scala.binary.version--> <version>1.7.2</version> <!--Flink版本號--> </dependency> </dependencies>
點擊import change即可。
新java class命名為:SocketTextStreamWordCount。
填寫下面程式碼:
import org.apache.flink.api.common.functions.FlatMapFunction; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.datastream.DataStreamSource; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.util.Collector; public class SocketTextStreamWordCount { public static void main(String[] args) throws Exception { //參數檢查 if (args.length != 2) { System.err.println("USAGE:nSocketTextStreamWordCount <hostname> <port>"); return; } String hostname = args[0]; Integer port = Integer.parseInt(args[1]); // set up the streaming execution environment final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); //獲取數據 DataStreamSource<String> stream = env.socketTextStream(hostname, port); //計數 SingleOutputStreamOperator<Tuple2<String, Integer>> sum = stream.flatMap(new LineSplitter()) .keyBy(0) .sum(1); sum.print(); env.execute("Java WordCount from SocketTextStream Example"); } public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> { public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) { String[] tokens = s.toLowerCase().split("\W+"); for (String token: tokens) { if (token.length() > 0) { collector.collect(new Tuple2<String, Integer>(token, 1)); } } } } } 2.編譯與運行
Maven打包
第一種方式,進入pom.xml同級目錄,輸入:mvn clean package -Dmaven.test.skip=true
上述表示:不但跳過單元測試的運行,也跳過測試程式碼的編譯。
另外一種方式,使用IDEA左邊的Maven直接install即可打包。


最終看到BUILD SUCCESS就成功了。
nc 命令
nc 是一款功能類似 cat 的工具,但是是用於網路的。它是一款擁有多種功能的 CLI 工具,可以用來在網路上讀、寫以及重定向數據。
輸入:sudo nc -l 1019
上述1019為埠號。
運行jar包
flink run -c SocketTextStreamWordCount 2-wordcount.jar 127.0.0.1 1019
需要配置環境變數flink或者進入flink的bin目錄下運行,輸入程式類名、jar包包名、埠號。
在nc處向埠發送數據,進入flink的log目錄查看log日誌,可以看到flink的統計結果。




問題:中文與特殊字元不能統計。
上述學習參考自:http://www.54tianzhisheng.cn/2018/09/18/flink-install/