单流滚动窗口

场景设定

某商家双十一期间进行商品促销活动。实时计算能够将商品出售情况作为数据流,每10秒进行一次计算并展现对应销售情况,帮助商家进行监控。

解决方案

滚动-1.png

操作步骤

源表-字段填写

在流计算源表中进行字段映射填写,从kafka中将数据流映射为具体字段。

after_event_id int as event_id
after_id varchar as id
after_buy_id varchar as buy_id
after_goods_type varchar as goods_type
after_pay_time timestamp as pay_time
after_buy_amount double as buy_amount
after_but_way varchar as buy_way

源表-详细配置

时间列选择字段类型为Timestamp或Bigint类型的数据。
滚动-2.png

FlinkSQL代码

对Kafka数据流内容进行SUM运算,同时输出处理的开始/结束时间,并将结果写入到MYSQL数据结果表中。

INSERT INTO dts_ds_merchant_target
SELECT SUM(buy_amount)   AS totalsale,
       TUMBLE_START(ROWTIME, INTERVAL '10' SECOND) AS tms,
       TUMBLE_END(ROWTIME, INTERVAL '1' SECOND) AS tme
FROM dts_ds_merchant_source
GROUP BY tumble(ROWTIME, INTERVAL '1' SECOND)

运行结果

  • 实时采集、FlinkSQL任务有正常的数据吞吐

滚动-3.png
滚动-4.png

  • MYSQL结果表每隔1分钟有正常的数据写入

滚动-5.png