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

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

http://www.xdnf.cn/news/131.html

相关文章:

  • 微信小程序怎么分包步骤(包括怎么主包跳转到分包)
  • Java集合框架深度解析:HashMap、HashSet、TreeMap、TreeSet与哈希表原理详解
  • C++ `unique_ptr` 多线程使用
  • 【React】通过 fetch 发起请求,设置 proxy 处理跨域
  • ESP32 搭建IDF+Vscode环境(详细教程)
  • 轻量化高精度的视频语义分割
  • 网络安全-Burp Suite基础篇
  • Android 音频架构全解析:从 AudioTrack 到 AudioFlinger
  • 【TeamFlow】 1 TeamFlow 去中心化生产协同系统架构
  • python抓取HTML页面数据+可视化数据分析(投资者数量趋势)
  • NFC 碰一碰发视频源码搭建,碰一碰发视频定制化开发技术
  • JavaScript性能优化实战指南
  • 云轴科技ZStack入选中国人工智能产业发展联盟《大模型应用交付供应商名录》
  • UE5 渲染视频
  • 龙虎榜——20250418
  • 微信小程序中,将搜索组件获取的值传递给父页面(如 index 页面)可以通过 自定义事件 或 页面引用 实现
  • C++面向对象
  • Windows .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题
  • Uniapp调用native.js使用经典蓝牙串口通讯方法及问题解决
  • 线上蓝桥杯比赛环境配置
  • MySQL事务详解
  • 【Python语言基础】22、异常处理
  • 【web服务_负载均衡Nginx】二、Nginx 核心技术之负载均衡与反向代理
  • Winform发展历程
  • 【电力安全小知识】什么情况下需要铺设绝缘胶垫
  • AIGC产品如何平衡用户体验与内容安全?
  • HDFS入门】HDFS安全与权限管理解析:从认证到加密的完整指南
  • OpenHarmony-Risc-V上运行openBLAS中的benchmark
  • 部署路线Ubuntu_MySQL_Django_绑定域名
  • 【Python3】Django 学习之路