news 2026/3/8 19:26:59

从零开始学Flink:Flink SQL 极简入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零开始学Flink:Flink SQL 极简入门

Flink SQL 是 Apache Flink 的核心模块之一,它让开发者可以使用标准的 SQL 语法来编写流处理和批处理作业。对于不想深究 Java/Scala 复杂 API 的“小白”来说,Flink SQL 是进入实时计算领域的最佳敲门砖。

本文将基于Flink 1.20.1版本,手把手教你在 WSL2 (Ubuntu) 环境下搭建环境,并运行你的第一个 Flink SQL 任务。

一、为什么选择 Flink SQL?

  1. 低门槛:会写 SQL 就能开发实时任务。
  2. 统一性:批流一体,同一套 SQL 既可以跑历史数据(批),也可以跑实时数据(流)。
  3. 生态丰富:内置了大量的 Connector(连接器),轻松连接 Kafka、MySQL、Hive 等主流组件。


(图:Flink SQL 架构示意图,展示 SQL 解析、优化到执行的过程)

二、环境准备 (WSL2 Ubuntu)

本教程演示环境为 Windows 下的 WSL2 (Ubuntu 20.04/22.04),这是目前 Windows 用户体验 Linux 开发环境的最佳姿势。
参考以前些的文章从零开始学Flink:揭开实时计算的神秘面纱,搭建好 Flink 环境。

三、体验 Flink SQL Client

Flink 提供了一个交互式的命令行工具:SQL Client。它允许你直接在终端编写和提交 SQL 任务。

1. 启动 SQL Client

如果没有启动Flink集群,则先启动flink集群:

/* by 01130.hk - online tools website : 01130.hk/zh/htaccess2nginx.html */ ./bin/start-cluster.sh

,然后在 Flink 目录下执行:

/* by 01130.hk - online tools website : 01130.hk/zh/htaccess2nginx.html */ ./bin/sql-client.sh

你将看到那只著名的松鼠 LOGO:


(图:SQL Client 启动欢迎界面)

2. Hello World:数据生成与打印

我们不依赖任何外部组件(如 Kafka),直接使用 Flink 内置的datagen连接器生成模拟数据,并用print连接器打印结果。

第一步:创建源表 (Source Table)

复制以下 SQL 到 SQL Client 中执行:

CREATE TABLE source_table ( id INT, name STRING, ts TIMESTAMP(3), WATERMARK FOR ts AS ts - INTERVAL '5' SECOND ) WITH ( 'connector' = 'datagen', -- 使用数据生成器 'rows-per-second' = '1', -- 每秒生成1条数据 'fields.id.kind' = 'sequence', -- id 字段为序列 'fields.id.start' = '1', -- id 从1开始 'fields.id.end' = '100' -- id 到100结束 );

执行后显示[INFO] Execute statement succeed.

第二步:创建结果表 (Sink Table)

CREATE TABLE print_table ( id INT, name STRING, ts TIMESTAMP(3) ) WITH ( 'connector' = 'print' -- 使用控制台打印连接器 );

第三步:提交任务

将源表的数据插入到结果表:

INSERT INTO print_table SELECT * FROM source_table;

此时,SQL Client 会提交一个异步任务到集群。你会看到类似 Job ID 的输出。

3. 查看运行结果

由于我们使用的是print连接器,在 Standalone 模式下,输出会打印到 TaskManager 的日志文件中。

打开一个新的 WSL2 终端窗口,进入 Flink 目录查看日志:

# 进入 log 目录 cd log # 查看最新的 .out 文件 (文件名包含 taskexecutor) tail -f flink-*-taskexecutor-*.out

你应该能看到屏幕上不断跳动的数据流:


(图:终端 tail -f 命令看到的实时数据输出)

四、常用命令速查

在 SQL Client 中,你可以使用以下命令:

  • HELP: 查看帮助。
  • SHOW TABLES: 查看当前创建的表。
  • SHOW JOBS: 查看运行中的作业。
  • DESCRIBE table_name: 查看表结构。
  • QUIT: 退出 SQL Client。

五、总结

恭喜你!你已经成功运行了人生中第一个 Flink SQL 任务。

通过本文,我们完成了:

  1. WSL2 下 Java 和 Flink 1.20.1 的安装。
  2. 启动了 Flink 本地集群。
  3. 使用 SQL Client 创建了 Source 和 Sink 表,并跑通了数据流。

下一篇,我们将深入讲解 Flink SQL 中的窗口(Window)操作,看看如何处理“过去5分钟的订单总额”这类经典需求。


参考资料

  • Flink 官方文档
  • 原文来自
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/2 18:32:15

ArcGIS应用教学——土地利用现状图制作与面积统计

一、认识数据和软件界面在开始动手制作地图之前,我们首先要搞清楚两件事:我们要处理什么样的数据,以及我们要使用的工具——ArcGIS软件长什么样。PS:例子数据在地球资源数据云平台中免费下载以本网站的2022年吉林省1000米分辨率土地利用遥感监…

作者头像 李华
网站建设 2026/2/23 2:36:43

国际法规更新:2026年测试数据管理必知要点

一、法规风暴:全球合规版图的重构 2026年,数据隐私与AI监管进入强约束时代。中国《网络数据安全管理条例》与修订版《个人信息保护法》(PIPL)构成监管基石,要求测试数据全生命周期合规。欧盟GDPR升级版将算法偏见检测…

作者头像 李华
网站建设 2026/3/4 19:31:10

深度解读CCPA:加州隐私法对测试脚本的影响

随着数据隐私法规的日益严格,《加州消费者隐私法案》(CCPA)已成为全球软件测试领域的焦点。该法案赋予消费者知情权、访问权、删除权和拒绝数据出售权,对测试脚本的编写、执行和验证提出了全新挑战。 一、CCPA核心条款及其对测试脚本的挑战 CCPA于2020年…

作者头像 李华
网站建设 2026/3/4 16:42:08

写作小白救星!抢手爆款的降AI率软件 —— 千笔·专业降AIGC智能体

在AI技术迅速渗透学术写作领域的今天,越来越多的学生开始依赖AI工具辅助完成论文、报告等学术材料。然而,随之而来的“AI率超标”问题也日益凸显——随着知网、维普、万方等查重系统不断升级算法,以及Turnitin对AIGC(人工智能生成…

作者头像 李华
网站建设 2026/2/27 6:07:56

plutofilter 是什么?开源图像滤镜库服务器搭建指南

在做图像处理相关项目时,很多开发者都会遇到一个共通的问题: 想加滤镜很容易,但性能和集成成本却不一定好控制。尤其是在这些场景中:Web 图片处理服务图像预处理与增强视频帧滤镜处理AI 训练前的数据处理如果滤镜库太重、依赖太多…

作者头像 李华
网站建设 2026/3/5 11:34:46

Redis100篇 - Redis的GeoHash功能 实现附近的人+距离计算

文章目录Redis100篇 - Redis的GeoHash功能:实现“附近的人”距离计算 🌍📍为什么需要 Redis GEO?传统方案的痛点 🤯❌ 问题显而易见:Redis GEO:专为 LBS 而生的解决方案 ✨核心优势:…

作者头像 李华