Flink Transformation 操作

    前面我们介绍了Flink DataStream数据处理流程中的source和sink,这篇文章我们介绍一下 Flink的Transformation 的操作,一般常用的算子有下面几种,我们分别用代码来演示下他基本用法:

Map操作

val stream = env.generateSequence(1, 5)
//简单的map操作
//val streamMap = stream.map(item =>  item * 3)
//复杂的map操作
val streamMap = stream.map(item => {
    val x = item * 3
    x + 1
 })
streamMap.print()

 

FlatMap操作

FlatMap为一行转多行操作,数据返回array类型

val streamFile = env.readTextFile("word.txt")
val streamFlat = streamFile.flatMap(item => item.split(" "))
streamFlat.print()

 

Filter操作

 

val streamFilter = stream.filter(item => item != 1)
streamFilter.print()

 

Connect操作

connect是对两个Stream的连接操作,通过连接一个算子可以通过不同函数同时对一个stream进行处理。

//connect操作,对ConnectedStreams进行map操作
val streamConnect = stream.connect(streamFlat)
val streamComap = streamConnect.map(item => item * 3, item => (item, 1))
streamComap.print()

 

//connect操作,对ConnectedStreams进行Flatmap操作
val streamConnect2 = stream.connect(streamFile)
val streamCoFlatmap = streamConnect2.flatMap(item => Array{item},

item => item.split(" "))

streamCoFlatmap.print()

Union操作

val streamUnion = streamFlat.union(stream.map(item => item.toString))
streamUnion.print()

 

Split和Select操作

val streamSplit= streamFlat.split(item =>
  ("flink".equals(item)) match {
    case true => List("flink")
    case false => List("other")
  }).select("other")
streamSplit.print()

 

KeyBy操作
 


//keyby算子,输入的DataStream中数据必须是tuple类型,下标从0开始,此操作

会产生distribute(shuffle)过程

val streamWord = streamFlat.map(item => (item, 1))
val streamKeyBy = streamWord.keyBy(0)

Reduce操作

通过执行发现打印把整个累加执行过程都输出了出来,所以flink的reduce包括下面等聚合操作必须引入窗口,下篇文章我们将详细讲解time和窗口的概念。

val streamReduce = streamKeyBy.reduce((item1, item2) => (item1._1 , item1._2 + item2._2))
streamReduce.print()

 

Flod操作

val streamflod = streamKeyBy.fold(100)((begin, item) => (begin + item._2))
streamflod.print()

 

Aggregate操作

val streamSum = streamKeyBy.sum(1)
val streamMax= streamKeyBy.max(1)
val streamMaxBy = streamKeyBy.maxBy(1)

streamSum.print()
streamMax.print()
streamMaxBy.print()

Flink Transformation 操作_第1张图片

猜您喜欢

往期精选▼

1. 大数据流批一体处理框架概述 

2. 软件开发中不得不知道的幂等性问题

3. Mongodb副本集和分片

4. Elasticsearch基础实践

5. Aerospike Introduction

6. Spark Rdd & DataFrame

你可能感兴趣的:(早起的码农,大数据处理,flink)