如何进行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便可。工具

相关文章
相关标签/搜索