(4)Flink CEP SQL贪婪词量演示
基于上一篇(3)Flink CEP SQL宽松近邻代码演示的延展,在上一篇中我们使用贪婪词量 +(至少匹配1行或多行),本篇将演示多种贪婪词量的效果:
(1)使用贪婪词量 *(匹配0行或多行)
public static void main(String[] args) {
EnvironmentSettings settings = null;
StreamTableEnvironment tEnv = null;
try {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
settings = EnvironmentSettings.newInstance()
.useBlinkPlanner()
.inStreamingMode()
.build();
tEnv = StreamTableEnvironment.create(env, settings);
System.out.println("===============CEP_SQL_10=================");
final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DataStream<Ticker> dataStream =
env.fromElements(
new Ticker(1, "ACME", 22, 1, LocalDateTime.parse("2021-12-10 10:00:00", dateTimeFormatter)),
new Ticker(3, "ACME", 19, 1, LocalDateTime.parse("2021-12-10 10:00:02", dateTimeFormatter)),
new Ticker(4, "ACME", 23, 3, LocalDateTime.parse("2021-12-10 10:00:03", dateTimeFormatter)),
new Ticker(5, "Apple", 25, 2, LocalDateTime.parse("2021-12-10 10:00:04", dateTimeFormatter)),
new Ticker(6, "Apple", 18, 1, LocalDateTime.parse("2021-12-10 10:00:05", dateTimeFormatter)),
new Ticker(7, "Apple", 16, 1, LocalDateTime.parse("2021-12-10 10:00:06", dateTimeFormatter)),
new Ticker(8, "Apple", 14, 2, LocalDateTime.parse("2021-12-10 10:00:07", dateTimeFormatter)),
new Ticker(9, "Apple", 19, 2, LocalDateTime.parse("2021-12-10 10:00:08", dateTimeFormatter)),
new Ticker(10, "Apple", 25, 2, LocalDateTime.parse("2021-12-10 10:00:09", dateTimeFormatter)),
new Ticker(11, "Apple", 11, 1, LocalDateTime.parse("2021-12-10 10:00:11", dateTimeFormatter)),
new Ticker(12, "Apple", 15, 1, LocalDateTime.parse("2021-12-10 10:00:12", dateTimeFormatter)),
new Ticker(13, "Apple", 19, 1, LocalDateTime.parse("2021-12-10 10:00:13", dateTimeFormatter)),
new Ticker(14, "Apple", 25, 1, LocalDateTime.parse("2021-12-10 10:00:14", dateTimeFormatter)),
new Ticker(15, "Apple", 19, 1, LocalDateTime.parse("2021-12-10 10:00:15", dateTimeFormatter)),
new Ticker(16, "Apple", 15, 1, LocalDateTime.parse("2021-12-10 10:00:16", dateTimeFormatter)),
new Ticker(17, "Apple", 19, 1, LocalDateTime.parse("2021-12-10 10:00:17", dateTimeFormatter)),
new Ticker(18, "Apple", 15, 1, LocalDateTime.parse("2021-12-10 10:00:18", dateTimeFormatter)));
Table table = tEnv.fromDataStream(dataStream, Schema.newBuilder()
.column("id", DataTypes.BIGINT())
.column("symbol", DataTypes.STRING())
.column("price", DataTypes.BIGINT())
.column("tax", DataTypes.BIGINT())
.column("rowtime", DataTypes.TIMESTAMP(3))
.watermark("rowtime", "rowtime - INTERVAL '1' SECOND")
.build());
tEnv.createTemporaryView("CEP_SQL_10", table);
String sql = "SELECT * " +
"FROM CEP_SQL_10 " +
" MATCH_RECOGNIZE ( " +
" PARTITION BY symbol " + //按symbol分区,将相同卡号的数据分到同一个计算节点上。
" ORDER BY rowtime " + //在窗口内,对事件时间进行排序。
" MEASURES " + //定义如何根据匹配成功的输入事件构造输出事件
" e1.id as id,"+
" AVG(e1.price) as avgPrice,"+
" e1.rowtime AS start_tstamp, " +
" e3.rowtime AS end_tstamp " +
" ONE ROW PER MATCH " + //匹配成功输出一条
" AFTER MATCH skip to next row " + //匹配后跳转到下一行
" PATTERN ( e1 e2* e3) WITHIN INTERVAL '2' MINUTE" +
" DEFINE " + //定义各事件的匹配条件
" e1 AS " +
" e1.price = 25 , " +
" e2 AS " +
" e2.price > 10 AND e2.price <19," +
" e3 AS " +
" e3.price = 19 " +
" ) MR";
TableResult res = tEnv.executeSql(sql);
res.print();
tEnv.dropTemporaryView("CEP_SQL_10");
}
匹配到了三组数据
贪婪词量 *(匹配0行或多行)
(2)使用贪婪词量 {n}(严格匹配n行)
(3)使用贪婪词量 {n,}(n或者更多行(n≥O))
推荐阅读
(4)SparkSQL中如何定义UDF和使用UDF
Spark SQL中用户自定义函数,用法和Spark SQL中的内置函数类似;是saprk SQL中内置函数无法满足要求,用户根据业务需求自定义的函数。首先定义一个UDF函数:
NBI大数据阅读 279
Flink Forward Asia 2022 主论坛概览
2022 年 11 月 26-27 日,Flink Forward Asia(FFA)峰会成功举行。Flink Forward Asia 是由 Apache 软件基金会官方授权、由阿里云承办的技术峰会,是目前国内最大的 Apache 顶级项目会议之一,也是 Flink 开发者...
MissD阅读 6.1k
第十六届中国大数据技术大会五大分论坛顺利举办!
1 月 8 日下午,由苏州市人民政府指导、中国计算机学会主办、苏州市吴江区人民政府支持,CCF 大数据专家委员会、苏州市吴江区工信局、吴江区东太湖度假区管委会、苏州市吴江区科技局、苏州大学未来科学与工程学院...
MissD阅读 5.7k
企业流程数字化转型研讨会暨《流程优化风暴》新书发布会 即将召开
伴随数字经济的来临,数字化转型已成为社会经济发展的主旋律,国内众多企业将其作为战略核心并深入推进。在数字化转型工作逐渐进入细分领域的过程中,作为企业业务实施的基础支撑,企业业务流程已成为数字化转型...
MissD阅读 4.8k
配置 Hue 访问 AWS S3 中国区(qbit)
Hue: Hadoop User Experience环境 {代码...} qbit 参照这两篇 Hue 官方文档搞了很久都没配好:文档一,文档二文档编写者估计没考虑到独立运营的 AWS 中国区用户的痛搞明白了也简单,就是在官方文档的基础上还得配...
qbit赞 2阅读 2.3k评论 1
数据分析er看过来,五款工具有你需要的
大部分人对数据分析的的第一印象就是Excel,python,其实选择一个工具开始学习是需要花费学习成本的,如果不清楚这款工具能给你带来什么价值,就开始盲目学习,很可能会浪费时间。那么今天我们就从整个数据分析流...
葡萄城技术团队阅读 4.1k
高效数据运营赋能数字化转型研讨会暨《DataOps 实践手册》新书发布会 预约通道开启!
隆重预告高效数据运营赋能数字化转型研讨会暨《DataOps 实践手册》新书发布会 主办单位:机械工业出版社举办时间:2023 年 1 月 10 日 8:30-12:00会议背景随着数据呈指数级增长,机器学习(ML)和人工智能(AI)...
MissD阅读 3.6k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。