大数据学习之Flink算子、了解(Transformation)转换算子(基础篇三)

本文详细介绍了Flink中的转换算子,包括基本转换算子如Map、Filter和FlatMap,以及聚合算子如keyBy、sum、min和max等。此外,还提到了用户自定义函数(UDF)和物理分区的概念,对于理解和应用Flink的数据处理逻辑具有指导意义。

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

Transformation转换算子(基础篇三)


目录

Transformation转换算子(基础篇三)

三、转换算子(Transformation)

1.基本转换算子

1.1 映射(Map)

1.2 过滤(filter)

1.3 扁平映射(flatmap)

1.4基本转换算子的例子

2.聚合算子(Aggregation)

2.1 按键分区(keyBy)

2.2 简单聚合

2.3 归约聚合(reduce)

3.用户自定义函数(UDF)

3.1 函数类(Function Classes)

3.2 富函数类(Rich Function Classes)

4.物理分区(Physical Partitioning)

4.1 随机分区(shuffle)

4.2 轮询分区(Round-Robin)

4.3 重缩放分区(rescale)

4.4 广播(broadcast)

4.5 全局分区(global)

4.6 自定义分区(Custom)


三、转换算子(Transformation)

数据源读入数据之后,我们就可以使用各种转换算子,将一个或多个 DataStream 转换为新的 DataStream,如图所示。一个Flink程序的核心,其实就是所有的转换操作,它们决定了处理的业务逻辑。

1.基本转换算子

1.1 映射(Map)

map算子接收一个函数作为参数,并把这个函数应用于DataStream的每个元素,最后将函数的返回结果作为结果DataStream中对应元素的值,即将DataStream的每个元素转换成新的元素。

1.2 过滤(filter)

filter 转换操作,顾名思义是对数据流执行一个过滤,通过一个布尔条件表达式设置过滤条件,对于每一个流内元素进行判断,若为 true 则元素正常输出,若为 false 则元素被过滤掉。

1.3 扁平映射(flatmap)

flatMap 操作又称为扁平映射,主要是将数据流中的整体(一般是集合类型)拆分成一个一个的个体使用。消费一个元素,可以产生 0 到多个元素。flatMap 可以认为是“扁平化”(flatten)和“映射”(map)两步操作的结合,也就是先按照某种规则对数据进行打散拆分,再对拆分后的元素做转换处理

1.4基本转换算子的例子

代码如下:

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

object Practice_of_Simple_Operators {
  def main(args: Array[String]): Unit = {
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    env.setParallelism(1) //设置并行度为1
    //常见的简单算子 有:map、flatmap、filter
    //map
    //从集合中获取不同数据类型数据
    val dataStream1 = env.fromCollection(List(1,2,3))
    //对每一个数 都乘以2
    val resultStream1 = dataStream1.map(data => data * 2)
    resultStream1.print("resultStream1")
    //flatmap
    val dataStream2 = env.fromCollection(List("hello word","hello flink","hello spark"))
    val resultStream2 = dataStream2.flatMap(_.split(" "))
    resultStream2.print("resultStream2")
    //filter
    val resultStream3 = dataStream1.filter(_%2==0)
    resultStream3.print("resultStream3")

    env.execute("Stream Transform")//启动flink作业
  }
}

运行结果:

2.聚合算子(Aggregation)

  • 直观上看,基本转换算子确实是在“转换”——因为它们都是基于当前数据,去做了处理和输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值