ApacheFlink-对数据流数据进行分类或分组,并使用CEP单独处理


0

假设我有一个数据流

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语句预先创建流和赋值。

编辑:

1 答案


0

这是通过在category属性上“ key入”流来完成的。

后面有一个字符串[(如果有一个字符串,则后面是一个字符串)]

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)

将针对 key控属性的每个不同值计算模式。


我来回答

写文章

提问题

面试题