Flink全托管为您提供了丰富的代码模板,每种代码模板都为您提供了具体的使用场景、代码示例和使用指导。您可以通过代码模板快速地了解Flink产品功能和相关语法,实现自己的业务逻辑。本文为您介绍代码模板的使用场景和操作步骤。
使用限制
仅实时计算引擎vvr-4.0.12-flink-1.13及以上版本支持使用代码模板。
注意事项
如果该模板中不包含INSERT INTO语句,则不支持部署该作业。
支持的模板
Flink全托管支持的模板和其使用场景详情如下表所示,具体请以控制台为准。
|
模板类别 |
模板名称 |
使用场景 |
|
基础模板 |
创建表 |
如果您需要创建表并保存在Catalog中,则可以使用DDL创建表。对表的操作和数据库类似。 |
|
创建临时表 |
如果您只需要在当前会话或SQL脚本中使用某些表,则可以使用临时表。 |
|
|
创建临时视图 |
如果您需要在Flink SQL开发过程中,重用代码,组织长查询或者SQL脚本来简化开发,则可以使用临时视图。 |
|
|
INSERT INTO |
如果您需要将查询结果写入到外部存储系统中的表,从而提供给下游应用程序,则可以使用INSERT INTO语法。 |
|
|
STATEMENT SET |
如果您需要将查询的结果输出到下游的两到多个外部系统中,则可以使用STATEMENT SET语法。 |
|
|
Watermark |
如果您希望Flink可以正确处理乱序数据,则需要使用Watermark。您可以在建表DDL中创建一个Watermark,即在一个已有字段上定义一个Watermark生成表达式,标记这个字段为时间属性字段。详情请参见Event Time and Watermarks。 |
|
|
聚合分析 |
GROUP BY |
如果您需要实时对数据进行聚合分析,则可以使用GROUP BY语句。 |
|
滚动窗口聚合 |
如果您需要对时间序列数据进行分组,并对每个分组内的数据进行聚合分析,则可以使用滚动窗口。 |
|
|
滑动窗口聚合 |
如果您需要每间隔一段时间更新一个窗口内的数据,则可以使用滑动窗口。 |
|
|
累积窗口聚合 |
如果您需要提早看到窗口的计算结果,例如每分钟看到最新的窗口结果,则可以使用累积窗口。 说明
累积窗口聚合不支持CDC,使用CDC后语法校验会报错 |
|
|
会话窗口聚合 |
如果您需要实时统计用户在一个活跃会话期间的数据,则可以使用会话窗口。 |
|
|
Over窗口聚合 |
如果您需要对一个窗口内的每个元素进行统计分析,则需要使用OVER窗口。 |
|
|
级联窗口聚合 |
如果您需要同时对同一个流的数据进行不同时间维度(例如1min、5min、30min、1h)的聚合,则可以使用级联窗口。 |
|
|
去重模板 |
去重 |
如果您需要去除数据流中的重复数据,则可以使用去重语法。 |
|
Top-N模板 |
Top-N |
如果您需要根据业务要求计算出当前排名前几位或者后几位的数据,则可以使用Top-N语法。 |
|
窗口Top-N |
如果您需要在某个时间范围内计算出目前排名前几位或者后几位的数据,则可以使用窗口Top-N语法。 |
|
|
CEP模板 |
模式检测(CEP) |
在数据流情景中,如果您需要搜索一组事件模式,则可以使用MATCH_RECOGNIZE语法。 |
|
Join模板 |
Regular Join |
如果您需要关联查询其他流表的数据进行计算,则可以使用Regular Join语法。 |
|
Interval Join |
如果您需要关联某张表在指定时间范围内的数据,则可以使用Interval Join语法。 |
|
|
时态表Join |
如果您需要流表中的每条数据都关联其他表中对应时间版本数据,则可以使用时态表Join。 |
|
|
维表Join |
如果您需要关联静态维表上的数据,则可以使用维表Join。 |
操作步骤
本文以创建表模板为您介绍如何使用代码模板。
-
登录实时计算控制台。
-
单击对应工作空间操作列下的控制台。
-
在页面,单击新建。
-
在SQL基础模版页签,双击目标模板名称,或者单击选中目标模板后,在右下角单击下一步。
可选的SQL基础模板包括空白的流作业草稿、空白的批作业草稿(BETA)、创建表、创建临时表、创建临时视图和INSERT INTO。
-
根据需要,修改文件名称、存储位置、引擎版本和SQL代码。
例如,引擎版本选择
vvr-6.0.6-flink-1.15,在 SQL 编辑器中输入建表语句CREATE TABLE orders (order_uid BIGINT, product_id BIGINT, price DECIMAL(32,2), order_time TIMESTAMP(3)) WITH ('connector' = 'datagen'),完成后单击创建。 -
单击创建。
后面的操作和正常的作业开发完全相同,作业开发的操作步骤详情请参见作业开发地图。