flink 1.20.X 开发教程
1. 使用官方快速创建一个项目快速创建项目目的是减少在开发过程中解决包依赖的关系出现错误和版本冲突的问题无法调度的问题浪费大量的时间官方的网址如下https://nightlies.apache.org/flink/flink-docs-release-1.20/zh/docs/dev/configuration/overview/windowsliunx 项目目录下执行如下命令后面跟上版本mvn archetype:generate -DarchetypeGroupIdorg.apache.flink -DarchetypeArtifactIdflink-quickstart-java -DarchetypeVersion1.20.3curl https://flink.apache.org/q/quickstart.sh | bash -s 1.20.32. 根据自已项目的需求开发和引入相关的jar,如下所示一个实例的pom文件!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdorg/groupId artifactIdexample/artifactId version1.0/version packagingjar/packaging nameFlink Quickstart Job/name properties project.build.sourceEncodingUTF-8/project.build.sourceEncoding flink.version1.20.2/flink.version target.java.version1.8/target.java.version scala.binary.version2.12/scala.binary.version maven.compiler.source${target.java.version}/maven.compiler.source maven.compiler.target${target.java.version}/maven.compiler.target log4j.version2.24.3/log4j.version jedis.version3.0.1/jedis.version /properties repositories repository idapache.snapshots/id nameApache Development Snapshot Repository/name urlhttps://repository.apache.org/content/repositories/snapshots//url releases enabledfalse/enabled /releases snapshots enabledtrue/enabled /snapshots /repository /repositories dependencies !-- Apache Flink dependencies -- !-- These dependencies are provided, because they should not be packaged into the JAR file. -- dependency groupIdorg.apache.flink/groupId artifactIdflink-streaming-java/artifactId version${flink.version}/version scopeprovided/scope /dependency dependency groupIdorg.apache.flink/groupId artifactIdflink-clients/artifactId version${flink.version}/version scopeprovided/scope /dependency !-- Add connector dependencies here. They must be in the default scope (compile). -- !-- Example: dependency groupIdorg.apache.flink/groupId artifactIdflink-connector-kafka/artifactId version3.0.0-1.17/version /dependency -- !-- Add logging framework, to produce console output when running in the IDE. -- !-- These dependencies are excluded from the application JAR by default. -- dependency groupIdorg.apache.logging.log4j/groupId artifactIdlog4j-slf4j-impl/artifactId version${log4j.version}/version scoperuntime/scope /dependency dependency groupIdorg.apache.logging.log4j/groupId artifactIdlog4j-api/artifactId version${log4j.version}/version scoperuntime/scope /dependency dependency groupIdorg.apache.logging.log4j/groupId artifactIdlog4j-core/artifactId version${log4j.version}/version scoperuntime/scope /dependency !-- 自行添加的内容 -- !-- Flink Kafka 连接器 -- dependency groupIdorg.apache.flink/groupId artifactIdflink-connector-kafka/artifactId version3.2.0-1.18/version /dependency !-- Flink JDBC 连接器 (核心依赖) -- dependency groupIdorg.apache.flink/groupId artifactIdflink-connector-jdbc/artifactId version3.2.0-1.18/version /dependency dependency groupIdorg.apache.flink/groupId artifactIdflink-connector-base/artifactId version1.20.2/version /dependency !--Flink 官方推荐用 maven-shade-plugin 或 flink-assembly-plugin 统一打包-- dependency groupIdorg.apache.flink/groupId artifactIdflink-table-api-java-bridge/artifactId version1.20.2/version !-- 替换为你的 Flink 版本 确保版本统一管理 -- exclusions exclusion artifactIdflink-java/artifactId groupIdorg.apache.flink/groupId /exclusion /exclusions /dependency !-- Flink Table Planner必须添加 -- dependency groupIdorg.apache.flink/groupId artifactIdflink-table-planner_2.12/artifactId version1.20.2/version /dependency !-- flink-table-runtime 1.20.2 -- dependency groupIdorg.apache.flink/groupId artifactIdflink-table-runtime/artifactId version1.20.2/version /dependency dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version1.2.83/version /dependency dependency groupIdorg.slf4j/groupId artifactIdslf4j-api/artifactId version1.7.36/version !-- 使用最新的版本 -- /dependency !-- 根据你的 MySQL 版本选择合适的版本,连接MYSQL必须要引用 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency dependency groupIdredis.clients/groupId artifactIdjedis/artifactId version${jedis.version}/version /dependency dependency groupIdjunit/groupId artifactIdjunit/artifactId version3.8.1/version scopetest/scope /dependency /dependencies build plugins !-- Java Compiler -- plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.1/version configuration source${target.java.version}/source target${target.java.version}/target /configuration /plugin !-- We use the maven-shade plugin to create a fat jar that contains all necessary dependencies. -- !-- Change the value of mainClass.../mainClass if your program entry point changes. -- plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-shade-plugin/artifactId version3.1.1/version executions !-- Run shade goal on package phase -- execution phasepackage/phase goals goalshade/goal /goals configuration createDependencyReducedPomfalse/createDependencyReducedPom artifactSet excludes excludeorg.apache.flink:flink-shaded-force-shading/exclude excludecom.google.code.findbugs:jsr305/exclude excludeorg.slf4j:*/exclude excludeorg.apache.logging.log4j:*/exclude /excludes /artifactSet filters filter !-- Do not copy the signatures in the META-INF folder. Otherwise, this might cause SecurityExceptions when using the JAR. -- artifact*:*/artifact excludes excludeMETA-INF/*.SF/exclude excludeMETA-INF/*.DSA/exclude excludeMETA-INF/*.RSA/exclude /excludes /filter /filters transformers transformer implementationorg.apache.maven.plugins.shade.resource.ServicesResourceTransformer/ transformer implementationorg.apache.maven.plugins.shade.resource.ManifestResourceTransformer mainClassbi.DataStreamJob/mainClass /transformer /transformers /configuration /execution /executions /plugin /plugins pluginManagement plugins !-- This improves the out-of-the-box experience in Eclipse by resolving some warnings. -- plugin groupIdorg.eclipse.m2e/groupId artifactIdlifecycle-mapping/artifactId version1.0.0/version configuration lifecycleMappingMetadata pluginExecutions pluginExecution pluginExecutionFilter groupIdorg.apache.maven.plugins/groupId artifactIdmaven-shade-plugin/artifactId versionRange[3.1.1,)/versionRange goals goalshade/goal /goals /pluginExecutionFilter action ignore/ /action /pluginExecution pluginExecution pluginExecutionFilter groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId versionRange[3.1,)/versionRange goals goaltestCompile/goal goalcompile/goal /goals /pluginExecutionFilter action ignore/ /action /pluginExecution /pluginExecutions /lifecycleMappingMetadata /configuration /plugin /plugins /pluginManagement /build /project3 在IDEA本机调试进行下面的设定3.1 在菜单中Run-Edit Configuarations-Modify options解决提示错误找不到steam.api相关的类错误信息如下这是由于quickstart模板中Flink依赖的scope默认为provided, 因此IDEA不会加载这些依赖。dependency groupIdorg.apache.flink/groupId artifactIdflink-streaming-java_${scala.binary.version}/artifactId version${flink.version}/version scopeprovided/scope /dependencyCaused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.api.datastream.DataStream3.2 选择启动的主类在本地调度时提示找不到相关的类文件即出现莫名其妙的错误信息4. flink程序中如果输出内容最好是使用system.out.println在resource输出配置内容使用system.out.println在任何时候都可以显示如果SLF4J 时可能不会显示输出的内容info的内容不会输出private static final Logger logger LoggerFactory.getLogger(MachineRealTimeState.class); logger.info(machine: machineId rungingCount: runningCount 稼动率: availabilityRate);5. 报错信息如下解决方案同第3点解决的问题是一致的。Exception in thread main java.lang.NoClassDefFoundError: org/apache/flink/shaded/guava30/com/google/common/collect/ImmutableList at org.apache.flink.runtime.util.config.memory.ManagedMemoryUtils.clinit(ManagedMemoryUtils.java:57) at org.apache.flink.streaming.api.graph.SimpleTransformationTranslator.configure(SimpleTransformationTranslator.java:121) at org.apache.flink.streaming.api.graph.SimpleTransformationTranslator.translateForStreaming(SimpleTransformationTranslator.java:63) at org.apache.flink.streaming.api.graph.StreamGraphGenerator.translate(StreamGraphGenerator.java:812) at org.apache.flink.streaming.api.graph.StreamGraphGenerator.transform(StreamGraphGenerator.java:534) at org.apache.flink.streaming.api.graph.StreamGraphGenerator.getParentInputIds(StreamGraphGenerator.java:833) at org.apache.flink.streaming.api.graph.StreamGraphGenerator.translate(StreamGraphGenerator.java:791) at org.apache.flink.streaming.api.graph.StreamGraphGenerator.transform(StreamGraphGenerator.java:534) at org.apache.flink.streaming.api.graph.StreamGraphGenerator.generate(StreamGraphGenerator.java:284) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.getStreamGraph(StreamExecutionEnvironment.java:2523) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.getStreamGraph(StreamExecutionEnvironment.java:2514) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.getStreamGraph(StreamExecutionEnvironment.java:2500) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:2319) at org.example.InventorySumBroadcast3.main(InventorySumBroadcast3.java:154) at org.example.App.main(App.java:32) Caused by: java.lang.ClassNotFoundException: org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableList at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ... 15 more序号项目教程网址备注1处理启动时找不到类相关的错误IDEA无法运行或调试Flink的解决方式 - 我是小马 - 博客园pom引用范围引的错误

相关新闻

Codex Skill开发实战:AI技能封装与应用案例解析

Codex Skill开发实战:AI技能封装与应用案例解析

1. Codex Skill核心概念解析Codex Skill本质上是一种基于AI模型的技能封装方式,它通过结构化提示词(Prompt)和特定领域的工作流设计,将复杂的AI能力转化为可复用的标准化组件。这种技术范式最早由OpenAI Codex的应用实践衍生而来&…

2026/7/17 5:10:25阅读更多 →
AI智能体放弃机制:决策模型与工程实践

AI智能体放弃机制:决策模型与工程实践

1. AI智能体的"放弃"机制研究背景华盛顿大学等机构的最新研究揭示了一个关键问题:AI智能体在执行任务时是否具备"适时放弃"的决策能力。这个问题看似简单,却触及了自主智能体系统的核心能力边界。想象一下,当你让智能助手…

2026/7/17 5:10:25阅读更多 →
C++实现Raft共识算法:从状态机设计到异步工程实践

C++实现Raft共识算法:从状态机设计到异步工程实践

1. 项目概述最近几年,分布式系统成了后端开发绕不开的话题,而共识算法又是分布式系统的基石。Raft 算法因为其易于理解的特性,成为了很多工程师学习分布式共识的入门选择。我自己在啃完 MIT 6.824 的课程后,总觉得用 Go 语言实现一…

2026/7/17 5:05:24阅读更多 →
Dify+蓝耘MaaS构建企业知识库实战指南

Dify+蓝耘MaaS构建企业知识库实战指南

1. 为什么选择Dify蓝耘MaaS构建企业知识库企业知识管理正面临三大痛点:分散的文档难以检索、专业问题响应效率低、新员工培训成本高。去年我们团队处理了超过1200次内部知识查询,平均响应时间长达47分钟。而采用Dify平台对接蓝耘MaaS(Model-a…

2026/7/17 6:05:30阅读更多 →
MyBatis-Plus:安装指南 / 从零到运行

MyBatis-Plus:安装指南 / 从零到运行

MyBatis-Plus 的安装实际上就是在一个 Java 项目(通常是 Spring Boot 项目)中,通过 Maven 引入它的核心依赖。它本身不是一个需要独立安装的软件,而是一个增强版的持久层框架,会在你的项目构建时被下载和引用。 一、核…

2026/7/17 6:05:30阅读更多 →
AI + 自动化测试平台/项目能力

AI + 自动化测试平台/项目能力

用 AI 提高测试设计效率,用自动化把接口测试沉淀成资产,用批量执行支撑回归测试,用日志和 AI 辅助分析失败原因,最后把这一套接入真实测试流程,形成一个可展示、可复盘、可写进简历的项目。一、我能不能用 AI 提高测试…

2026/7/17 6:05:30阅读更多 →
基于双目视觉与改进YOLOv8的玉米茎秆宽度精准测量技术

基于双目视觉与改进YOLOv8的玉米茎秆宽度精准测量技术

1. 项目背景与核心需求玉米茎秆宽度是评估玉米抗倒伏能力的关键指标,传统测量方法存在两个主要痛点:一是人工测量效率低下,单株测量耗时约30秒且易受主观因素影响;二是现有自动化设备在复杂田间环境下的识别精度不足,平…

2026/7/17 6:05:30阅读更多 →
2020年STM32/STM8开发技术趋势与实战技巧

2020年STM32/STM8开发技术趋势与实战技巧

1. 2020年度STM32/STM8技术热点全景扫描2020年对于嵌入式开发者而言是充满技术变革的一年。作为STMicroelectronics旗下两大主力产品线,STM32和STM8系列在这一年迎来了诸多重要更新。从年初发布的STM32WLE5无线LoRa系列,到针对电机控制优化的STM32G4系列…

2026/7/17 6:05:30阅读更多 →
C++多线程编程:深入理解std::thread::join()原理与Windows实践

C++多线程编程:深入理解std::thread::join()原理与Windows实践

1. 项目概述:为什么我们需要join()?在 Windows 平台上用 C 搞多线程开发,std::thread的join()函数绝对是你绕不开的一个核心操作。乍一看,它就是个“等待线程结束”的函数,但如果你真把它想得这么简单,那在…

2026/7/17 6:00:30阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →