Flink的Transformation转换主要包括四种:单数据流基本转换、基于Key的分组转换、多数据流转换和数据重分布转换。读者可以使用Flink Scala Shell或者Intellij Idea来进行练习:
- Flink Scala Shell使用教程
- Intellij Idea开发环境搭建教程
- Flink单数据流基本转换:map、filter、flatMap
- Flink基于Key的分组转换:keyBy、reduce和aggregations
很多情况下,我们需要对多个数据流进行整合处理,Flink为我们提供了多流转换算子,本文主要介绍多流转换。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b720HZsp-1577286494774)(/Users/luweizheng/Documents/iCloud/博文/大数据/Flink/flink-transformation/transformation/curioso-photography-lnbR0E65Yn4-unsplash.jpg)]
union
在DataStream
上使用union
算子可以合并多个同类型的数据流,并生成同类型的数据流,即可以将多个DataStream[T]
合并为一个新的DataStream[T]
。数据将按照先进先出(First In First Out)的模式合并,且不去重。下图union
对白色和深色两个数据流进行合并,生成一个数据流。
假设股票价格数据流来自不同的交易所,我们将其合并成一个数据流:
val shenzhenStockStream: DataStream[StockPrice] = ...
val hongkongStockStream: DataStream[StockPrice] = ...
val shanghaiStockStream: DataStream[StockPrice] = ...
val unionStockStream: DataStream[StockPrice] = shenzhenStockStream.union(hongkongStockStre