Apache Flink(五): Flink Operator

本文深入探讨了Apache Flink中的Operator,包括DataStream转换如Map、FlatMap、Filter和Union,以及ConnectedStreams、SplitStream和KeyedDataStream的使用。此外,还介绍了物理分区的概念,如任务链和资源组,强调了它们在优化任务执行和资源利用中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Operator(操作符)

DataStream Transformations 数据流转换

Datastream -> Datasteam

Map(映射)

取一个元素并产生一个元素,是一个映射函数。下面的例子为使用Map将输入流的值加倍

dataStream.map { x => x * 2 }

FlatMap(展开)

取一个元素并产生零个,一个或多个元素。FlatMap可将英文短语拆分为单词

dataStream.flatMap { str => str.split(" ") }

Filter(过滤)

为每个元素评估一个布尔函数,并保留该函数返回true的布尔函数。 过滤出零值的过滤器,即布尔函数的返回值为true则保留

dataStream.filter { _ != 0 }

Union(联合)

两个或多个数据流的并集,创建一个包含所有流中所有元素的新流。 注意:如果将数据流与其自身合并,则在结果流中每个元素将获得两次。

dataStream.union(otherStream1, otherStream2, ...)
DataStream,DataStream → ConnectedStreams

Connect(连接)

Connect两个保留其类型的数据流,从而允许两个流之间共享状态。

someStream : DataStream[Int] = ...
otherStream : DataStream[String] = ...

val connectedStreams = someStream.connect(otherStream)

CoMap, CoFlatMap

类似于ConnectedStreams上的map和flatMap

connectedStreams.map(
    (_ : Int) => true,
    (_ : String) => false
)
connectedStreams.flatMap(
    (_ : Int) => true,
    (_ : String) => false
)

案例代码

import org.apache.flink.streaming.api.scala._

object FlinkConnectStream {

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值