# FlinkTutorial-1.17 **Repository Path**: junjun_com/flink-tutorial-1.17 ## Basic Information - **Project Name**: FlinkTutorial-1.17 - **Description**: 大数据Flink1.17实战,共分四大篇章:基础篇、核心篇、高阶篇、SQL篇。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-02-11 - **Last Updated**: 2026-02-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: flink ## README # Flink-Tutorial-1.17 Apache Flink 1.17 教程项目,包含丰富的 Flink 示例代码,适合学习和参考。 ## 项目简介 本项目是一个完整的 Apache Flink 1.17 学习教程,涵盖了 Flink 的核心概念和常用操作。每个示例都提供了详细的代码演示,帮助开发者快速掌握 Flink 的使用方法。 ## 示例分类 ### 1. 基础操作 - **环境配置** (`env/EnvDemo.java`) - Flink 执行环境配置 - **数据源** (`source/`) - 集合、文件、Kafka 等数据源示例 - **数据转换** (`transfrom/`) - Map、Filter、FlatMap 等转换操作 ### 2. 聚合与分组 - **聚合操作** (`aggreagte/`) - Keyby、Reduce、Aggregate 等聚合示例 - **分区操作** (`partition/`) - 自定义分区策略示例 ### 3. 窗口操作 - **时间窗口** (`window/TimeWindowDemo.java`) - 滚动窗口、滑动窗口 - **计数窗口** (`window/CountWindowDemo.java`) - 计数窗口示例 - **窗口聚合** (`window/WindowAggregateDemo.java`) - 窗口内聚合 ### 4. 状态管理 - **Keyed状态** (`state/KeyedValueStateDemo.java` 等) - Value、List、Map、Aggregating、Reducing 状态 - **Operator状态** (`state/OperatorListStateDemo.java`) - Operator 状态管理 - **状态后端** (`state/StateBackendDemo.java`) - 状态后端配置 - **状态TTL** (`state/StateTTLDemo.java`) - 状态过期时间设置 ### 5. 水位线与事件时间 - **水位线生成** (`watermark/`) - 周期性、标点式水位线 - **迟到数据处理** (`watermark/WatermarkLateDemo.java`) - 侧输出流处理迟到数据 - **间隔连接** (`watermark/IntervalJoinDemo.java`) - 事件时间间隔连接 ### 6. 进程函数 - **KeyedProcessFunction** (`process/KeyedProcessFunctionTopNDemo.java`) - 顶层 API,实现 TopN - **定时器** (`process/KeyedProcessTimerDemo.java`) - 事件时间定时器 - **侧输出** (`process/SideOutputDemo.java`) - 多路输出示例 ### 7. 连接器 - **Kafka** (`sink/SinkKafka.java` 等) - Kafka Source 和 Sink - **文件系统** (`sink/SinkFile.java`) - 文件输出 - **自定义Sink** (`sink/SinkCustom.java`) - 自定义输出 ### 8. 检查点与保存点 - **检查点配置** (`checkpoint/CheckpointConfigDemo.java`) - 检查点高级配置 - **Kafka EOS** (`checkpoint/KafkaEOSDemo.java`) - Kafka 精确一次语义 - **保存点** (`checkpoint/SavepointDemo.java`) - 状态迁移 ### 9. SQL 与 Table API - **Table API** (`sql/TableStreamDemo.java`) - Table API 基础操作 - **自定义函数** (`sql/`) - 标量函数、表函数、聚合函数 - **SQL 示例** (`sql/SqlDemo.java`) - SQL 语句演示 ### 10. 高级特性 - **算子链** (`wc/OperatorChainDemo.java`) - 算子链配置 - **槽位共享** (`wc/SlotSharingGroupDemo.java`) - 资源隔离配置 - **连接与联合** (`combine/`) - 多流连接 ## 快速开始 ### 环境要求 - JDK 1.8+ - Maven 3.x - Flink 1.17.x ### 编译运行 ```bash # 编译项目 mvn clean package -DskipTests # 运行示例 flink run -c com.atguigu.wc.WordCountStreamDemo target/flink-tutorial-1.17-1.0-SNAPSHOT.jar ``` ### 运行测试 ```bash mvn test ``` ## 项目结构 ``` flink-tutorial-1.17/ ├── pom.xml # Maven 配置 ├── src/main/java/com/atguigu/ │ ├── wc/ # 词统计示例 │ ├── source/ # 数据源示例 │ ├── transfrom/ # 转换操作示例 │ ├── aggreagte/ # 聚合操作示例 │ ├── partition/ # 分区策略示例 │ ├── window/ # 窗口操作示例 │ ├── watermark/ # 水位线示例 │ ├── state/ # 状态管理示例 │ ├── process/ # 进程函数示例 │ ├── sink/ # 输出示例 │ ├── checkpoint/ # 检查点示例 │ ├── sql/ # SQL 示例 │ ├── combine/ # 多流操作示例 │ ├── split/ # 数据分流示例 │ ├── functions/ # 自定义函数示例 │ └── bean/ # 实体类 └── src/test/java/ # 测试代码 ``` ## 许可证 本项目遵循 MIT 许可证。 ## 贡献指南 欢迎提交 Issue 和 Pull Request。 ## 联系方式 - 项目地址: https://gitee.com/junjun_com/flink-tutorial-1.17