从流中收到的数据应按每日和每月汇总。
考虑以下版本(但包括返回类型为数组的分支):
https://kafka.apache.org/0101/javadoc/org/apache/kafka/streams/kstream/KStream.html
我们如何使用transform方法执行两者?基本上,每日聚合应首先在执行月初聚合之前完成。
答案 0 :(得分:2)
如果您使用的是Kafka Streams,您还可以查看基于Kafka Streams构建的KSQL。它使您可以简单地使用SQL来声明流处理,包括聚合:
CREATE TABLE DAILY_SALES_AGG AS \
SELECT STORE, PRODUCT, SUM(NETT_SALES) AS DAILY_SALES_TOTAL \
FROM SALES_STREAM WINDOW TUMBLING (SIZE 1 DAY) \
GROUP BY STORE, PRODUCT;
CREATE TABLE MONTHLY_SALES_AGG AS \
SELECT STORE, PRODUCT, SUM(NETT_SALES) AS MONTHLY_SALES_TOTAL \
FROM SALES_STREAM WINDOW TUMBLING (SIZE 28 DAYS) \
GROUP BY STORE, PRODUCT;
有关详细信息,请参阅KSQL syntax reference,包括aggregate functions。
有关KSQL的更多信息:
免责声明:我为Confluent工作,他领导开源KSQL项目的开发