大厂 5 年实时数据开发经验总结,Flink SQL 看这篇就够了!

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 大厂 5 年实时数据开发经验总结,Flink SQL 看这篇就够了!

使SQL

Table\SQLAPI使SQL

SQLSQLSQLSQLSQL

使SQL

SQL使SQLSQLSQL8-1

8-1

访
访

8-13使SQL3

  • 1SQL
  • 2SQL
  • 3SQL

13FlinkDynamicTable

22MaterializedViewsSQLSQL访

SQLSQLSQL

FlinkEagerViewMaintenance

INSERTUPDATEDELETE3使INSERTUPDATEDELETEchangelogstreamSQL

FlinkContinuousQuery

使SQLFlink

  1. DynamicTableTable\SQLAPI
  2. 8-4

8-4

ContinuousQuery8-5SQLAPIFlink使

8-5SQLAPI

Flink3

  • SQLAPIFlinkSQLAPI8-5
  • SQL
  • SQLAPI

SQLFlinkSQL使使FlinkTable\SQLAPI

  • 1
  • 21min

1

pIdincomeIDpIdallID

SQLAPI8-18使GROUPBYpId使SUM

8-18使SQLAPI

// 创建数据源表
CREATE TABLE source_table (
pId BIGINT,
income BIGINT
) WITH (
...
);
// 创建数据汇表
CREATE TABLE sink_table (
pId BIGINT,
all BIGINT
) WITH (
...
);
// 执行查询
INSERT INTO sink_table
SELECT
pId
, SUM(income) as all
FROM source_table
GROUP BY pId;

SQLAPI

8-6

8-6

8-7

8-7

changelogstream8-7source_tablesource_tablesource_tableINSERT8-18SQLpIdIDpId

  • [1,5]INSERTsource_tableSQLINSERT[1,5]pId1[1,5]INSERT
  • [2,6]INSERTsource_tableINSERT[2,6]INSERT
  • [3,7]INSERTsource_tableINSERT[3,7]INSERT
  • [1,8]INSERTsource_tableINSERT[1,5][1,13]pId1[1,13]UPDATE

INSERTUPDATEFlinkUpdateQuery

IDSQLINSERTIDUPDATEUPDATE

1min

pIdincometimeIDpIdallminutesID1min1min

1min1min使SQLAPI8-19使GROUPBYpIdGROUPBYTUMBLE(row_time,INTERVAL'1'MINUTES)1min1min使SUM1minTUMBLE_START(row_time,INTERVAL'1'MINUTES)1min

8-19使SQLAPI1min

// 创建数据源表
CREATE TABLE source_table (
pId BIGINT,
income BIGINT,
time BIGINT, // 单位为毫秒
// 用于定义数据的事件时间戳
row_time AS TO_TIMESTAMP_LTZ(time, 3),
// 用于指定Watermark分配方式,最大乱序时间为5s
WATERMARK FOR row_time AS row_time - INTERVAL '5' SECOND
) WITH (
...
);
// 创建数据汇表
CREATE TABLE sink_table (
pId BIGINT,
all BIGINT,
minutes STRING
) WITH (
...
);
// 执行查询
INSERT INTO sink_table
SELECT
pId
, sum(income) as all
, TUMBLE_START(row_time, INTERVAL '1' MINUTES) as minutes
FROM source_table
GROUP BY 
pId
, TUMBLE(row_time, INTERVAL '1' MINUTES)

SQLAPI

8-8DataStreamAPITableAPISQLAPI使便8-8::HH:mm:ss

8-8

8-9SubTask

8-9

8-9source_tablesource_tablesource_tableINSERT8-19SQLpIdID1minpId1

1min[09:01:00,09:02:00)[09:02:00,09:03:00)[09:06:00,09:07:00)[09:09:00,09:10:00)1231

  • [09:01:00,09:02:00)INSERTSQLINSERTWatermark09:02:00[1,5,09:01:00]pId1[09:01:00,09:02:00)INSERT
  • [09:02:00,09:03:00)INSERTINSERTWatermark09:03:00[2,13,09:02:00]INSERT
  • [09:06:00,09:07:00)INSERTINSERTWatermark09:07:00[3,8,09:06:00][1,18,09:06:00]INSERT
  • [09:09:00,09:10:00)INSERTINSERTWatermark09:10:00[2,9,09:09:00]INSERT

INSERTFlinkAppendQuery

SQL[09:09:00,09:10:00)[09:09:00,09:10:00)SQL

SQLSQLSQLSQLINSERT

INSERTUPDATEDELETE

FlinkTable\SQLAPI3

  • Append-only
  • Retract
  • Upsert

3

Append-only

INSERTINSERTAppend-onlystream2

Retract

Retract

RetractAddMessageRetractMessageRetractINSERTDELETEUPDATE

Retract

FlinkINSERTUPDATEDELETE

  • INSERTINSERT
  • UPDATEUPDATEUPDATE
  • DELETEDELETE

8-101Retract

8-10Retract

8-10Retract+-+-

8-10SQL

  • [1,5]INSERTsource_tableSQLINSERT[1,5]INSERTINSERT+[1,5]
  • [2,6]
  • [1,7]INSERTsource_tableINSERT[1,5][1,13]pId1[1,13]UPDATEUPDATE-[1,5]+[1,12]

Retract

Upsert

Upsert

UpsertUpsertMessageDeleteMessageUpsertINSERTUPDATEDELETEUpsert

  • UPSERTINSERTUPDATEUPSERTINSERTUPDATE

Upsert

FlinkINSERTUPDATEDELETE

  • INSERTINSERT
  • UPDATEUPDATEUpsertRetractRetractUPDATEUpsertUPDATEUpsert
  • DELETEDELETE

8-111Upsert

8-11Upsert

8-11Upsert--

8-11SQL

  • [1,5]source_tableSQL[1,5]INSERT*[1,5]
  • [2,6]
  • [1,7]source_table[1,5][1,13]pIdpId1[1,13]UPDATE*[1,12]

Upsert便

SQLRetractUpsertUpsertUPDATEUpsertRetract7Upsert5

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
SQL 存储 API
Flink实践:通过Flink SQL进行SFTP文件的读写操作
虽然 Apache Flink 与 SFTP 之间的直接交互存在一定的限制,但通过一些创造性的方法和技术,我们仍然可以有效地实现对 SFTP 文件的读写操作。这既展现了 Flink 在处理复杂数据场景中的强大能力,也体现了软件工程中常见的问题解决思路——即通过现有工具和一定的间接方法来克服技术障碍。通过这种方式,Flink SQL 成为了处理各种数据源,包括 SFTP 文件,在内的强大工具。
173 15
|
20天前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
1月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
1月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
1月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
1月前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
235 4
|
1月前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
95 1
|
1月前
|
存储 运维 监控
实时计算Flink版在稳定性、性能、开发运维、安全能力等等跟其他引擎及自建Flink集群比较。
实时计算Flink版在稳定性、性能、开发运维和安全能力等方面表现出色。其自研的高性能状态存储引擎GeminiStateBackend显著提升了作业稳定性,状态管理优化使性能提升40%以上。核心性能较开源Flink提升2-3倍,资源利用率提高100%。提供一站式开发管理、自动化运维和丰富的监控告警功能,支持多语言开发和智能调优。安全方面,具备访问控制、高可用保障和全链路容错能力,确保企业级应用的安全与稳定。
43 0
|
2月前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
91 3
|
1月前
|
SQL 大数据 API
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
46 0
下一篇
无影云桌面