我正在使用带有pyspark的结构化流处理来自Kafka的数据流。如果读数异常,我想以avro格式将警报发布到Kafka
source temperature timestamp
1001 21 4/28/2019 10:25
1001 22 4/28/2019 10:26
1001 23 4/28/2019 10:27
1001 24 4/28/2019 10:28
1001 25 4/28/2019 10:29
1001 34 4/28/2019 10:30
1001 37 4/28/2019 10:31
1001 36 4/28/2019 10:32
1001 38 4/28/2019 10:33
1001 40 4/28/2019 10:34
1001 41 4/28/2019 10:35
1001 42 4/28/2019 10:36
1001 45 4/28/2019 10:37
1001 47 4/28/2019 10:38
1001 50 4/28/2019 10:39
1001 41 4/28/2019 10:40
1001 42 4/28/2019 10:41
1001 45 4/28/2019 10:42
1001 47 4/28/2019 10:43
1001 50 4/28/2019 10:44
Transform
source range count alert
1001 21-25 5 HIGH
1001 26-30 5 MEDIUM
1001 40-45 5 MEDIUM
1001 45-50 5 HIGH
我定义了一个滑动20秒和1秒的窗口函数。我能够使用简单的where条件发布警报,但是如果任何警报优先级的计数为20(窗口中的所有记录都具有任何优先级HIGH-> count( 20)等。有人可以建议如何做吗?
我还可以使用json格式发布数据,但不能使用AVRO生成数据。 Scala和Java具有to_avro()函数,但pyspark没有任何函数。
感谢您的回应