单流滑动窗口

场景设定

某商家双十一期间进行商品促销活动,商家希望查看最近5分钟销售额情况。实时计算能够将商品出售情况作为数据流,运用滑动窗口(Hop Window)每次开窗时间为5分钟,滑动步长为30s。

滑动-1.png

解决方案

滑动-2.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类型的数据。 [[64mXj]]

滑动-3.png

FlinkSQL代码

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

INSERT INTO dts_ds_slide_target
SELECT SUM(buy_amount) AS totalsale,
      HOP_START(ROWTIME, INTERVAL '30' SECOND   ,INTERVAL '5' MINUTE   ) as hops,
      HOP_END(ROWTIME, INTERVAL '30' SECOND    ,INTERVAL '5'MINUTE  )   as hope
FROM dts_ds_merchant_source
GROUP BY HOP(ROWTIME, INTERVAL '30' SECOND   ,INTERVAL '5' MINUTE )

运行结果

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

滑动-4.png
滑动-5.png

  • MYSQL结果表有正常数据写入(开窗时长为5分钟,滑动步长为30s)

滑动-6.png