07_Flink Streaming transform

flatmap,map,filter都是转换,通过datastream的transform方法。以最经典的flatmap为例,transform,需要三个参数,操作名字,输出类型,对输入数据的操作。返回

SingleOutputStreamOperator,是datastream的子类,也就是可以链式的调用。返回一个OneInputTransformation。是StreamTransformation的子类。

也就是说,map,flatmap,filter等用到了transform的datastream上的操作,只是生产一个StreamTransformation,每个StreamTransformation都保存着上个StreamTransformation的引用input,相当于一个带有parentId的StreamTransformation的tree

也就是说。通过datastream的链式调用,就是在绘制这个StreamTransformation的tree的过程。

每个StreamTransformation都保存了。INPUT,OUTPUT的数据类型,和具体的转换逻辑StreamOperator。

最后绘制的这个转换的tree,由StreamGraphGenerator来绘制。

结论就是一个tranformation,持有上一个transformation的引用,和子集的operator逻辑(join时候有多个operator,单流时有一个)。和并发度,buffertimeout等具体计算节点的上下文。

从operator的接口来看,除了要处理数据外,还要处理WATERMARK。也就是数据在流的过程中,会有WATERMARK伴随着一起。而map,flat,filter等纯计算的并不关心WATERMARK,而是直接转发给下一步。 

public <R> SingleOutputStreamOperator<R> flatMap(FlatMapFunction<T, R> flatMapper) {

		TypeInformation<R> outType = TypeExtractor.getFlatMapReturnTypes(clean(flatMapper),
				getType(), Utils.getCallLocationName(), true);

		return transform("Flat Map", outType, new StreamFlatMap<>(clean(flatMapper)));

	}

 
	@PublicEvolving
	public <R> SingleOutputStreamOperator<R> transform(String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值