flink sql groupBy 使用注意

flink sql groupBy 使用注意,第1张

flink sql groupBy 使用注意 1、flink sql groupBy异常疑惑

在flink sql的任务开发中,会大量使用groupBy聚合数据,但是下一些场景回发现使用groupBy会报错,我自己在刚开发flink sql任务不久,发现这个问题同样的写法,有的地方成功有的地方失败,有一段时间感觉很疑惑。

下面是使用 sink kafka的报错信息

sql parser error: AppendStreamTableSink doesn't support consuming update changes which is 

produced by node GroupAggregate(groupBy=[log_map], select=[log_map])

从报错信息来看,是因为sink kakfa不支持持续更新,什么意思呢?

groupBy算子 *** 作输出的数据,要覆盖上一次的数据,但是kafka本身的特性是不支持更新的,所以在sink数据的时候我们要注意数据存储容器的特性。判断是否可以使用groupBy,通过判断存储数据的容器是否支持数据更新,一支持数据更新的数据库,比如mysql、es、clickhouse,我们就可以使用groupBy, 对应的filnk-connector,有update sink,生产更新语句。

2、窗口聚合

虽然sink-kafka不支持持续更新,如果我们有业务场景需求,可以做局部的聚合也就是窗口聚合,在窗口内的数据聚合输出一次结果,这样就可以把部分聚合数据写入到kafka。

INSERT INTO kafka_sink_table
SELECT
	COUNT(1) cnt
FROM kafka_source_table
GROUP BY TUMBLE(proctime(), INTERVAL '10' second)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5677379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存