Apache flink 按数据流数据分类或分组,并分别使用CEP进行处理
假设我有一个数据流Apache flink 按数据流数据分类或分组,并分别使用CEP进行处理,apache-flink,complex-event-processing,data-stream,Apache Flink,Complex Event Processing,Data Stream,假设我有一个数据流 x:1, y:2 , z:3 , x:7 , y:-1, z:0, z:3 , z:2, y:3 ,x: 2 ,y:6 如何将x,y,z放入他们自己的存储桶中,并对其应用我的CEP规则 x:1, x:7,x: 2 y:2, y:-1, y:3 , y:6 z:3, z:0 , z:3, z:2 或者换个说法。如何将流拆分为这些类别(每个x、y、z对应一个流)。我将得到3个子流,它们有自己的CEP处理 这里的挑战是,x、y、z不是预定义的。因此,我无法使用if或switc
x:1, y:2 , z:3 , x:7 , y:-1, z:0, z:3 , z:2, y:3 ,x: 2 ,y:6
如何将x,y,z
放入他们自己的存储桶中,并对其应用我的CEP规则
x:1, x:7,x: 2
y:2, y:-1, y:3 , y:6
z:3, z:0 , z:3, z:2
或者换个说法。如何将流拆分为这些类别(每个x、y、z对应一个流)。我将得到3个子流,它们有自己的CEP处理
这里的挑战是,x、y、z不是预定义的。因此,我无法使用if或switch语句预创建流和赋值
编辑:
该模式类似于“如果x值在过去10分钟内在0-8之间这是通过在category属性上“键入”流来完成的
如果您有一个DataStream[(String,Int)]
,则如下所示:
val yourStream: DataStream[(String, Int)] = ???
val yourPattern: Pattern = ???
// key by String attribute
val keyedStream = yourStream.keyBy(_._1)
// apply pattern on keyed stream
val patternStream: PatternStream = CEP.pattern(keyedStream, yourPattern)
模式将针对键控属性的每个不同值进行评估。编辑了我的问题。我将如何使其满足我的要求。我必须观察x值10分钟,然后做出决定。