FLINK基础(92): DS算子与窗口单流算子KeyBy

Posted 秋华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FLINK基础(92): DS算子与窗口单流算子KeyBy相关的知识,希望对你有一定的参考价值。

KeyBy

DataStream → KeyedStream

keyBy通过指定key来将DataStream转换成KeyedStream。基于不同的key,流中的事件将被分配到不同的分区中去。所有具有相同key的事件将会在接下来的操作符的同一个子任务槽中进行处理。拥有不同key的事件可以在同一个任务中处理。但是算子只能访问当前事件的key所对应的状态。

如图5-4所示,把输入事件的颜色作为key,黑色的事件输出到了一个分区,其他颜色输出到了另一个分区。

 

 

 

keyBy()方法接收一个参数,这个参数指定了key或者keys,有很多不同的方法来指定key。我们将在后面讲解。下面的代码声明了id这个字段为SensorReading流的key。

scala version

 
val keyed: KeyedStream[SensorReading, String] = readings.keyBy(r => r.id)

匿名函数r => r.id抽取了传感器读数SensorReading的id值。

java version

 
KeyedStream<SensorReading, String> keyed = readings.keyBy(r -> r.id);

匿名函数r -> r.id抽取了传感器读数SensorReading的id值。

dataStream.keyBy(value -> value.getSomeKey());
dataStream.keyBy(value -> value.f0);

 

以上是关于FLINK基础(92): DS算子与窗口单流算子KeyBy的主要内容,如果未能解决你的问题,请参考以下文章

Flink窗口转换算子

Flink窗口转换算子

Flink 窗口算子

flink window窗口算子

FLINK基础(145):DS事件时间 时间相关 API

Flink流处理之窗口算子分析