当前位置: 首页 > news >正文

Flink 2.0 编译

文章目录

    • Flink 2.0 编译
      • 第一个问题 java 版本太低
      • maven 版本太低
      • maven 版本太高
      • 开始编译
      • 扩展多版本jdk 配置

Flink 2.0 编译

看到Flink2.0 出来了,想去玩玩,看看怎么样,当然第一件事,就是编译代码,但是没想到这么多问题,首先我们还是看一下Flink 2.0 有什么变化

在 2.0 版本中,Flink 引入了若干创新性功能,以应对实时数据处理的关键挑战,并满足现代应用(包括人工智能驱动的工作流)不断增长的需求。

  • 分离式状态管理 架构使得 Flink 在云原生环境中更高效地利用资源,在确保高性能实时处理的同时将资源开销降至最低。

  • 物化表 的引入和改进使用户能够专注于业务逻辑,无需深入了解流处理的复杂性以及流与批处理模式之间的差异,从而简化开发流程并提高生产力。批处理模式的优化为近实时或非实时处理场景提供了具有成本效益的替代方案,扩展了 Flink 对多样化应用场景的适应性。

  • 此外,与 Apache Paimon 的深度集成强化了 流式湖仓 架构,使 Flink 成为实时数据湖应用场景的领先解决方案。

  • 随着人工智能和大语言模型的不断崛起,对可扩展的实时数据处理解决方案的需求也在增长。Flink 2.0 在性能、资源效率和易用性方面的进步使其成为 人工智能工作流 的强大基础,确保 Flink 处在实时数据处理创新的前沿地位。

这些改进共同展示了 Flink 致力于满足现代数据应用不断变化的需求,这其中就包括将实时处理能力与人工智能驱动的系统相结合。

除了新功能外,Flink 2.0 还对已弃用的 API 和配置进行了全面清理,这可能导致某些接口和行为出现向后不兼容的变化。升级到此版本的用户应特别注意这些变化,以确保顺利迁移。

第一个问题 java 版本太低

image-20250410182827312

java.lang.UnsupportedClassVersionError: com/puppycrawl/tools/checkstyle/api/AuditListener has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

这个问题很好解决,升级java 就可以了

主版本(Major Version)对应JDK版本
52JDK 8
53JDK 9
54JDK 10
55JDK 11

maven 版本太低

Flink2.0 不支持maven3.6 了,所以必须升级,然后我就直接安装了最新的版本3.9.9

image-20250410182618713

当然你也可以使用Flink2.0 项目中的maven wrapper

image-20250410183052783

或者直接在idea 离配置如上所示,但是悄悄告诉你也不行

./mvnw clean package -DskipTests -Djdk11 -Pjava11-targetError: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.
Investigate or delete /Users/cz/workspace/git/flink/.mvn/wrapper/maven-wrapper.jar to attempt a clean download.
If you updated your Maven version, you need to update the specified wrapperSha256Sum property.

我也不知道flink 团队是怎么搞的,都不自己测试一下吗,不同版本的java 的命令如下

./mvnw clean package -DskipTests -Djdk21 -Pjava21-target
./mvnw clean package -DskipTests -Djdk17 -Pjava17-target
./mvnw clean package -DskipTests -Djdk11 -Pjava11-target

但是都报错,我们还是直接使用自己安装的maven 吧

maven 版本太高

我直接安装了3.9.9 ,打包的时候报错如下

image-20250417211239106

Detected Maven Version: 3.9.9 is not in the allowed range [3.8.6,3.8.6].
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.1.0:enforce (enforce-maven) on project flink-parent: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]

image-20250417211529456

这个我们直接去pom 文件里改吧,这里我在3.8.6 后面配置了3.9.9

image-20250417211748154

开始编译

当然这个过程中,还是各种问题,当然我们还是一一解决了

 mvn clean package -Dmaven.test.skip=true -Djdk17 -Pjava17-target
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run (build-test-jars) on project flink-python: An Ant BuildException has occured: /Users/cz/workspace/git/flink/flink-python/target/test-classes does not exist.
[ERROR] around Ant part ...<jar basedir="/Users/cz/workspace/git/flink/flink-python/target/test-classes" destfile="/Users/cz/workspace/git/flink/flink-python/target/artifacts/testUdf1.jar" includes="**/TestScalarFunction1.class"/>... @ 4:206 in /Users/cz/workspace/git/flink/flink-python/target/antrun/build-main.xml

看这个报错我竟然有点茫然,我直接进入flink-python 模块去编译,成功了,但是在根项目下就失败

image-20250417221227761

看这个报错,还是跟test 有关,看起来-Dmaven.test.skip=true 在python 这个项目中没有生效,导致代码没有编译,但是在尝试运行

这个模块我们可以去掉这个跳过测试的参数,就编译成功了

 mvn clean package  -Djdk17 -Pjava17-target  -rf :flink-python

image-20250417221857812

后面的模块,我们又把这个参数加上

mvn clean package -Dmaven.test.skip=true -Djdk17 -Pjava17-target  -rf :flink-s3-fs-base

image-20250417222248240

好坑呀,这里又说这个test jar 不存在,看起来test 的代码还得编译,不然后面的flink-s3-fs-hadoop 找不到依赖

mvn clean install -DskipTests -Djdk17 -Pjava17-target  -rf :flink-s3-fs-base

image-20250417223631093

扩展多版本jdk 配置

这里教大家一个如何本地部署多版本的java,并且随时切换,首先我们吧把下面的配置,配置到/etc/profile 或者是 ~/.bash_profile 文件中

这里由于我jdk8 是手动下载安装的,23和17 都是通过brew 安装的,所以并不在同一个目录下

JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
JAVA_23_HOME=/opt/homebrew/Cellar/openjdk/23.0.2
JAVA_17_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.15alias jdk8='export JAVA_HOME=$JAVA_8_HOME'
alias jdk17='export JAVA_HOME=$JAVA_17_HOME'
alias jdk23='export JAVA_HOME=$JAVA_23_HOME'

image-20250417214414859

相关文章:

  • 高频面试题:Android MVP/MVVM/MVI这几种架构在实际生产中,各自的优缺点和适用场景是什么
  • [滑动窗口]209. 长度最小的子数组
  • 【算法笔记】整除与最大公约数(GCD)专题整理
  • 【多目标进化算法】NSGA-II 算法(结合例子)
  • 表格RAG技术实战指南
  • 如何使用 DeepSeek 帮助自己的工作?
  • 【c语言】深入理解指针3——回调函数
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(三级)真题
  • 非比较排序——计数排序
  • GitHub创建远程仓库
  • 【Win】 cmd 执行curl命令时,输出 ‘命令管道位置 1 的 cmdlet Invoke-WebRequest 请为以下参数提供值: Uri: ’ ?
  • 力扣刷题Day 20:柱状图中最大的矩形(84)
  • 万物对接大模型:【爆火】MCP原理与使用指南
  • 广东水利水电安全员 B 证考试精选题
  • AutoSAR从概念到实践系列之MCAL篇(一)——MCAL架构及其模块详解
  • http请求和websocket区别和使用场景
  • o3和o4-mini的升级有哪些亮点?
  • 纯CSS实现自动滚动到底部
  • C++ 二叉搜索树
  • 安装多个DevEco Studio版本,如何才能保证各个版本不冲突?
  • 民生访谈|“AI推广是把学生教聪明还是教笨了?这个问题必须回答好”
  • 俄乌互指对方未遵守复活节临时停火提议
  • 陈杨梅:为爸爸寻我19年没有放弃而感动,回家既紧张又期待
  • 江南大部、江淮南部等地今起有较强降雨,水利部部署防范工作
  • 老总们带着产品直奔对接会,外贸拓内销找到更多“新路子”
  • 考艾的森林与雾气中,艺术在生长