从零开始学Flink: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 提供了一个交互式的命令行工具:SQL Client。它允许你直接在终端编写和提交 SQL 任务。

1. 启动 SQL Client

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

复制代码
./bin/start-cluster.sh

,然后在 Flink 目录下执行:

复制代码
./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 任务。

通过本文,我们完成了:

相关推荐
Tongzhi202615 分钟前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法
智购科技自动售卖机厂家20 分钟前
2026自动售货机库存热力图分析:从设备分布到补货优先级的数据可视化实践~YH
大数据·python·信息可视化
SelectDB技术团队31 分钟前
Apache Doris 5.0 年度版本前瞻(一):构建统一的多模湖仓实时分析平台
大数据·doris·数据湖·湖仓一体·lakehouse·湖仓分析·多模分析
eBest数字化转型方案37 分钟前
Route Optimization for FMCG:多目标排线算法的工程实现
大数据·人工智能·算法
Han.miracle44 分钟前
Elasticsearch深度分页问题完整解析
大数据·elasticsearch·搜索引擎
小柯南敲键盘1 小时前
跨境电商批量图片翻译与视频字幕翻译,就用跨马AI工具
大数据·人工智能·python·音视频
GlobalInfo1 小时前
正文回答“是什么”,附录回答“为什么是这样”
大数据·人工智能
大牧师1 小时前
TypeORM 学习教程
数据库·sql·学习·node.js·orm·nest.js·typeorm
数字孪生视频孪生1 小时前
空间智能技术|跨镜轨迹全域可溯,无感定位无扰赋能落地
大数据·运维·人工智能·重构·架构
Raas1001 小时前
AI网关和LLM网关区别?MAI Gateway(魔芋企业级AI网关)企业级方案对比指南
大数据·人工智能·gateway·mai gateway·企业级产品