赞
踩
Flink本身包含系统运行所需的类和依赖项,如协调、网络、检查点、故障转移、操作、资源管理等。这些类和依赖项构成执行引擎的核心,并且在启动Flink应用程序时必须存在
<!-- Flink核心依赖-->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-core</artifactId>
<version>1.11.0</version>
</dependency>
用户应用程序依赖主要是指用户的应用程序所需的连接器和库等依赖项。用户的应用程序通常被打包成JAR包,其中包含应用程序带那么及其所需的连接器和库
每个Flink应用程序都需要最小的Flink API依赖。在手动设置项目时,需要为Java API添加以下依赖项
<!-- Flink流处理应用程序的依赖 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<version>1.11.0</version>
<!-- provided表示在打包时不将该依赖打包进去,可选的值还有compile、runtime、system、test -->
<scope>provided</scope>
</dependency>
所有这些依赖项的作用域(scope)都被设置为“provided”,这意味着需要对其进行编译,单不应该将他们打包到项目的生产环境的JAR包中。这些依赖项是Flink核心依赖项,在任何设置中都是可用的。
建议将这些依赖项保持在“provided”的范围内。如果未将“scope”的值设置为“provided”,则会使生成的JAR包变得过大(因为它包含了所有Flink核心依赖项),从而引起依赖项版本冲突
与DataStream API和DataSet API开发Flink应用程序所需要的依赖不同,通过Table API、SQL开发应用程序,需要加入如下所示的依赖:
<!-- Flink的Table API、SQL依赖 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-api-java-bridge_2.11</artifactId>
<version>1.11.0</version>
<scope>provided</scope>
</dependency>
除此之外,如果想在IDE本地运行程序,则需要添加响应的模块,具体取决于使用的计划期
如果使用OldPlanner,则添加如下所示的依赖:
<!-- 适用于Flink1.9之前可用的OldPlanner -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner_2.11</artifactId>
<version>1.11.0</version>
<scope>provided</scope>
</dependency>
如果使用BlinkPlanner,则添加如下所示的依赖
<!-- 适用于BlinkPlanner -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_2.11</artifactId>
<version>1.11.0</version>
<scope>provided</scope>
</dependency>
由于部分Table相关的代码是用Scala实现的,因此如下所示的依赖也需要添加到程序中,不管是流处理应用程序还是批处理应用程序
<!-- 部分Table相关的Scala依赖 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-stream-scala_2.11</artifactId>
<version>1.11.0</version>
<scope>provided</scope>
</dependency>
如果想用自定义格式来解析Kafka数据,或者自定义函数,则添加如下所示的依赖。编译出来的JAR包可以直接给SQL Client使用
<!-- Table的公共依赖 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-common</artifactId>
<version>1.11.0</version>
<scope>provided</scope>
</dependency>
flink-table-common模块包含的可以扩展的接口有SerializationSchemaFactory、DeserializationSchemaFactory、ScalarFunction、TableFunction和AggregateFunction
如果在开发工具中测试Flink应用程序,则需要添加如下所示的依赖,否则会报错
<!-- Flink的客户端依赖 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_2.11</artifactId>
<version>1.11.0</version>
</dependency>
大多数应用程序都需要使用特定的连接器或库才能运行,如连接到Kafka、Hive等,这些连接器不是Flink核心依赖项的一部分,因此,它们必须作为依赖项被添加到应用程序中
<!-- Flink的kafka连接器依赖 -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka_2.11</artifactId>
<version>1.11.0</version>
</dependency>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。