IDEA 2024 配置 Flink Scala开发环境
一、环境
IntelliJ IDEA 2024.1 (Ultimate Edition)
项目JDK版本:Zulu JDK11
Scala 2.12.19
Scala编译ServerJDK版本: JDK21
Flink 1.19.1
二、步骤、
-
创建Java项目
-
安装Scala插件,安装后重启
位置:Settings --> Plugins --> Marketplace
-
设置Scala编译器
进入 File --> Project Structure --> Global Libraries
-
配置Scala编译器
左上角+号 --> Scala SDK --> Download,选择2.12.19,等待下载完成
之后选择2.12.19,点击OK
不要退出,点击Libraries,再次添加Scala SDK,选择2.13.14
到期项目配置完成,接下来创建WordCount进行测试
-
Maven添加以下配置
<properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <flink.version>1.19.1</flink.version> <scala.version>2.12</scala.version> </properties> <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_${scala.version}</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-scala_${scala.version}</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients</artifactId> <version>${flink.version}</version> </dependency> </dependencies>
-
src中添加scala文件夹并标记为Source Root
-
新建Main.scala
package com.innovationv2 import org.apache.flink.streaming.api.scala._ object Main { def main(args: Array[String]): Unit = { val env = StreamExecutionEnvironment.getExecutionEnvironment val lineDS = env.socketTextStream("localhost", 9998) lineDS .flatMap(_.split(" ")) .filter(_.nonEmpty) .map((_,1)) .keyBy(_._1) .sum(1) .print() env.execute() } }
-
测试
打开终端,启动nc
nc -lk 9998
运行Flink项目
在终端输入字符,Flink会输出结果
三、附录
3.1 Scala版本要和Flink依赖的Scala版本统一
比如我们使用的Flink依赖的Scala版本是2.12,那么项目使用的Scala也必须是2.12
3.2 Scala要选JDK支持版本
JDK支持的Scala最低版本网址:https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html
如图,JDK21支持的2.12的最低版本为2.12.18,如果Scala低于这个版本,将会报错
如果出现问题,可在Settings --> Build, Execution, Deployment --> Compiler --> Scala Compiler --> Scala Compiler Server 切换JDK版本,这里我们选择JDK21
3.3 JDK版本要与Flink支持版本统一
https://nightlies.apache.org/flink/flink-docs-release-1.19/zh/docs/deployment/java_compatibility/
查看Flink1.19的文档,发现只支持到JDK11,JDK17只是实验性加入,未正式支持。测试下来JDK17的确会报错,本项目使用JDK11
进入File --> Project Sturcture
-
选择Project,SDK切换为Flink支持的版本
-
选择Modules
-
Sources 选择对应的JDK版本
-
Dependencies,选择对应版本JDK
之后确认即可
-