本文将对Flink Transformation中各算子进行详细介绍,并使用大量例子展示具体使用方法。Transformation各算子可以对Flink数据流进行处理和转化,是Flink流处理非常核心的API。如之前文章所述,多个Transformation算子共同组成一个数据流图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDnkbPZD-1576554022497)(/Users/luweizheng/Documents/iCloud/博文/大数据/Flink/flink-transformation/4-method-specify-transformation/rich-tervet-s.png)]
Flink的Transformation是对数据流进行操作,其中数据流涉及到的最常用数据结构是DataStream
,DataStream
由多个相同的元素组成,每个元素是一个单独的事件。在Scala中,我们使用泛型DataStream[T]
来定义这种组成关系,T是这个数据流中每个元素对应的数据类型。在之前的股票数据流处理的例子中,数据流中每个元素的类型是股票价格StockPrice
,整个数据流的数据类型为DataStream[StockPrice]
。在Java中,这种泛型对应的数据结构为DataStream<T>
。
在使用这些算子时,需要在算子上进行用户自定义操作,一般使用Lambda表达式或者继承模板类并重写函数两种方式完成这个用户自定义的过程。下文将用map
算子来演示如何使用Lambda表达式或者重写函数的方式实现对算子的自定义。
读者可以使用Flink Scala Shell或者Intellij Idea来进行练习:
Flink的Transformation转换主要包括四种:单数据流基本转换、基于Key的分组转换、多数据流转换和数据重分布转换。本文先介绍单数据流基本转换,完整的代码在github上:https://github.com/luweizheng/flink-tuto