首页 > 解决方案 > Spark结构化流中的自定义窗口

问题描述

从卡夫卡,我正在消费这种格式的事件流:

{"ts": 0, "x": 2} # ts is the timestamp, a single digit for convenience, and x is an integer

每次总和x大于时,我都想对行进行分组10。例如,如果我有这个流:

{"ts": 0, "x": 2} {"ts": 1, "x": 9} {"ts": 2, "x": 2} {"ts": 3, "x": 8} {"ts": 4, "x": 10}

我想以这种方式对行进行分组:

{"ts": 0, "x": 2} {"ts": 1, "x": 9} # group 1
{"ts": 2, "x": 2} {"ts": 3, "x": 8} # group 2
{"ts": 4, "x": 10}                  # group 3

到目前为止,我已经设法覆盖时间戳(使用groupBy(window("ts", "5 minutes")),但我不知道如何使用 pyspark 进行更多自定义操作。

额外的问题:如何简单地将传入事件分组为固定大小的事件块?

标签: apache-sparkpysparkapache-kafkaapache-spark-sqlspark-structured-streaming

解决方案


推荐阅读