项目模板
Flink 应用项目可以使用 Maven 或 SBT 来构建项目, Flink 针对这些构建工具提供了相应项目模板.
Maven 模板命令如下, 我们只需要根据提示输入应用项目的 groupId,artifactId,version 和 package 路径即可.
mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.7.2
目录结构和我们使用 IDEA 创建的目录结构基本一样, 只是它会帮我们引入 Flink 依赖和日志依赖.
- <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-shade-plugin 插件, 所以在打包的时候记得将 mainClass 改成自己的主类.
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 即可.
来源: https://www.cnblogs.com/bigdata1024/p/11938727.html