開發 Java 不外乎都是使用 Eclipse 或是 IntelliJ,其他的都相對小眾。而 IntelliJ 又比 Eclipse 好用很多,所以我就只會用 IntelliJ 來說明。可以先到 https://www.jetbrains.com/idea/download/ 下載,免費(社區版) 就很夠用了,當然你要用付費版也沒什麼不好。而且,官方直接說 Eclipse 會有 Scala 的配置問題,並不推薦使用,
Flink 是可以用 Scala 開發的,我自己是不熟,所以還是用 Java,但如果你熟 Scala 的話,可以這樣開啟相關的 plugin:
不過 Scala 未來會被移出 Flink,所以建議早點轉移到 Java
這個腳本會建立一個新專案
$ mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeVersion=1.17.1
或是用這個
$ curl https://flink.apache.org/q/quickstart.sh | bash -s 1.17.1
pom.xml 內要加一些 dependence, 主要有兩大塊:streaming 跟 TableAPI。可以混合也可以獨立使用,但 Table API 我還掌握得不好,所以建議用 streaming 即可,這也是我們使用 Flink 的主要目的。
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
</dependency>
當然,你基本上還需要 flink-runtime 來在 IDE 內直接執行 job。如果有用到一些外部資源,像是 Kafak 的話,還需要相關的 Connector,例如:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
</dependency>
最後,不要忘記測試:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-test-utils</artifactId>
<version>1.17.1</version>
<scope>test</scope>
</dependency>
如此一來,你的專案應該就可以順利執行了。不過在 IDE 開啟不會看到 Web UI ,但你應該也不需要,因為一切都在你的 terminal 內運作。