Flink的项目依赖

一、Flink核心依赖和用户的应用程序依赖

一、Flink核心依赖

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核心依赖项),从而引起依赖项版本冲突

三、Table API和SQL的依赖

一、相关依赖

与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>

四、Connector和Library的依赖

大多数应用程序都需要使用特定的连接器或库才能运行,如连接到Kafka、Hive等,这些连接器不是Flink核心依赖项的一部分,因此,它们必须作为依赖项被添加到应用程序中

<!-- Flink的kafka连接器依赖 -->
<dependency>
	<groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-kafka_2.11</artifactId>
    <version>1.11.0</version>
</dependency>

五、Hadoop的依赖

  • 如果没有将现有的Hadoop输入/输出格式与Flink的Hadoop一起使用,则不比将Hadoop依赖项直接添加到应用程序中
  • 如果要将Flink与Hadoop一起使用,则需要具有一个包含Hadoop依赖项的Flink设置,而不是将Hadoop添加为用户的应用程序依赖项
  • 如果在IDE内进行测试或开发(如用于HDFS访问),则需要添加Hadoop依赖项,并制定依赖项的范围(Scope)
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值