如何進行Flink項目構建,快速開發Flink應用程序?

項目模板

Flink應用項目可使用Maven或SBT來構建項目,Flink針對這些構建工具提供了相應項目模板。
Maven模板命令以下,咱們只須要根據提示輸入應用項目的groupId、artifactId、version和package路徑便可。java

mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.7.2

目錄結構和咱們使用IDEA建立的目錄結構基本同樣,只是它會幫咱們引入Flink依賴和日誌依賴。apache

<flink.version>1.7.2</flink.version>
<scala.binary.version>2.11</scala.binary.version>
...
<dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <scope>provided</scope>
        </dependency>

flink-java和flink-streaming-java_2.11是咱們使用Java開發Flink應用程序的必要依賴。maven

默認也幫咱們引入maven-shade-plugin插件,因此在打包的時候記得將mainClass改爲本身的主類。ide

Flink應用程序開發依賴項能夠分爲兩類:

  • Flink核心依賴(Flink core Dependencies):它是Flink運行系統所需的類和依賴項,也就是Flink項目的核心代碼和所使用的依賴。好比實現的:調度、通訊、checkpoint、API等。咱們上面所引入的就是Flink的核心依賴,對於核心依賴咱們只須要將依賴做用範圍scope設置爲provided便可,也就是不將依賴打入jar包。由於對於這些核心依賴,Flink運行集羣可以爲咱們提供。
  • 應用程序依賴(User Application Dependencies):這部分就是咱們開發應用程序所須要的一些其它依賴項,好比鏈接器、格式化庫、Flink CEP、Flink SQL、Flink ML等。在打包應用程序的時候,咱們須要將這些依賴項與咱們的應用程序代碼一同打入到一個jar包中
//Flink核心依賴
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>1.7.2</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-java_2.11</artifactId>
  <version>1.7.2</version>
  <scope>provided</scope>
</dependency>
//應用程序依賴
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-kafka-0.10_2.11</artifactId>
    <version>1.7.2</version>
</dependency>

總結

本文主要對如何使用Maven構建工具來快速構建Flink項目以及Flink核心依賴和應用程序依賴的不一樣作了講解,須要注意對於核心依賴咱們只須要將依賴做用範圍scope設置爲provided便可。工具

相關文章
相關標籤/搜索