Flink之数据流类型

本文详细介绍了Flink的DataStream API中各种数据流类型,包括DataStream、KeyedStream、WindowedStream、JoinedStream、CoGroupedStreams和ConnectedStreams。通过转换和操作,这些数据流类型在Flink流处理中扮演了重要角色,如KeyedStream用于按key分组,WindowedStream实现了窗口操作, JoinedStream和CoGroupedStreams用于流的连接和组合,ConnectedStreams则允许不同类型的流连接并共享状态。

Flink为流处理和批处理分别提供了DataStream API和DataSet API。在开发工作中这些API极大的便利了开发者开发大数据应用。DataStream 在经过Transformation之后,会随之生成相应的数据流类型。比如:KeyedStream,JoinedStreams,CoGroupedStreams等等。但这些数据流类型之间是如何通过转换联系在一起的?。下文☞☞☞☞☞

流之间转换

15934580-158ee37036585e6a.png
图1

DataStream

DataStream 是Flink 流处理API中最核心的数据结构。他代表了一个运行在多个分区上的并行流。一个DataStream可以从StreamExecutionEnvironment 通过env.addSource(SourceFunction)获得,可以但是不限于这一种方式。

DataStream上的转换操作都是逐条的,比如map(),flatMap(),filter()。DataStream 也可以执行rebalance(再平衡,用来减轻数据倾斜) 和broadcaseted(广播)等分区转换。

val stream: DataStream[MyType] = env.addSource(new FlinkKafkaConsumer011[String](...)).setParallelism(3)
val str1: DataStream[(String, MyType)] = stream.flatMap { ... }
val str2: DataStream[(String, MyType)] = stream.rebalance()
val str3: DataStream[AnotherType] = stream.map { ... }

上面给出的DataStream代码块在运行时会转换成如下执行图:

Flink是一个流式处理框架,它提供了丰富的数据流操作和转换功能。在Flink中,数据流类型转换是指将一个数据流从一种类型转换为另一种类型的操作。 Flink中的数据流类型转换可以通过以下几种方式实现: 1. Map转换:Map转换是最常用的数据流类型转换操作之一。它接收一个输入数据流,并将每个元素通过用户定义的函数进行转换,生成一个新的数据流。 2. FlatMap转换:FlatMap转换与Map转换类似,但它可以生成零个、一个或多个输出元素。它接收一个输入数据流,并将每个元素通过用户定义的函数进行转换,生成一个或多个新的数据流。 3. Filter转换:Filter转换用于过滤掉不符合条件的元素。它接收一个输入数据流,并根据用户定义的条件函数对每个元素进行判断,只保留满足条件的元素,生成一个新的数据流。 4. KeyBy转换:KeyBy转换用于按照指定的键对数据流进行分组。它接收一个输入数据流,并根据用户指定的键选择对应的字段作为分组依据,生成一个分组后的数据流。 5. Reduce转换:Reduce转换用于对分组后的数据流进行聚合操作。它接收一个分组后的数据流,并根据用户定义的聚合函数对每个分组进行聚合操作,生成一个新的数据流。 6. Window转换:Window转换用于将无界的数据流切分为有界的窗口,并对每个窗口内的数据进行操作。它接收一个输入数据流,并根据用户指定的窗口规则将数据流切分为窗口,然后对每个窗口内的数据进行操作,生成一个新的数据流。 以上是Flink中常用的数据流类型转换操作,通过这些转换操作,可以实现对数据流的各种处理和转换。如果你有其他相关问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值