Flink常用算子总结

2023-11-17

Streaming 算子

    Map,将元素处理转换,再输出。map算子对一个DataStream中的每个元素使用用户自定义的Mapper函数进行处理,每个输入元素对应一个输出元素,最终整个数据流被转换成一个新的DataStream。输出的数据流DataStream<OUT>类型可能和输入的数据流DataStream<IN>不同。我们可以重写MapFunctionRichMapFunction来自定义map函数

public static class DoubleMapFunction implements MapFunction<Integer, String> {
    @Override
    public String map(Integer input) {
      return "function input : " + input + ", output : " + (input * 2);
    }
}


    FlatMap, 将元素处理转换,再输出(可输出多个)flatMap算子和map有些相似,输入都是数据流中的每个元素,与之不同的是,flatMap的输出可以是零个、一个或多个元素,当输出元素是一个列表时,flatMap会将列表展平。

DataStream<String> longSentenceWords = dataStream.flatMap(new FlatMapFunction<String, String>() {
    @Override
    public void flatMap(String input, Collector<String> collector) throws Exception {
      if (input.length() > 15) {
        for (String word: input.split(" "))
        	collector.collect(word);
      }
    }
});


    Filter,过滤,保留条件成立的元素。filter算子对每个元素进行过滤,过滤的过程使用一个Filter函数进行逻辑判断。对于输入的每个元素,如果filter函数返回True,则保留,如果返回False,则丢弃。当然也

DataStream<Integer> dataStream = senv.fromElements(7, 9, 2, 0, 15, 6, 13);

DataStream<Integer> lambda = dataStream.filter ( input -> input > 0 );

此外,也可以继承FilterFunction或RichFilterFunction,然后重写filter方法 

    KeyBy ,逻辑上将Stream根据指定的Key进行分区,是根据key的散列值进行分区的。keyBy算子将DataStream转换成一个KeyedStream。KeyedStream是一种特殊的DataStream,事实上,KeyedStream继承了DataStream,DataStream的各元素随机分布在各算子实例中,KeyedStream的各元素按照Key分组,相同Key的数据会被分配到同一算子实例中。我们需要向keyBy算子传递一个参数,以告知Flink以什么作为Key进行分组

DataStream<Tuple2<Integer, Double>> dataStream = senv.fromElements(
                Tuple2.of(1, 1.0), Tuple2.of(2, 3.2), Tuple2.of(1, 5.5),
                Tuple2.of(3, 10.0), Tuple2.of(3, 12.5));
DataStream<Tuple2<Integer, Double>> keyedStream = dataStream.keyBy(0).sum(1);


    Reduce,和 MapReduce 中 Reduce 原理基本一致,主要目的是将输入的 KeyedStream 通过 传 入 的 用 户 自 定 义 的 ReduceFunction 滚 动 地 进 行 数 据 聚 合 处 理 , 其 中 定 义 的 ReduceFunciton 必须满足运算结合律和交换律。
    Aggregations,Aggregations 是 KeyedDataStream 接口提供的聚合算子,根据指定的字段进行聚合操 作,滚动地产生一系列数据聚合结果。其实是将 Reduce 算子中的函数进行了封装,封装的 聚合操作有 等,这样就不需要用户自己定义 Reduce 函数。
    Union,Union 算子主要是将两个或者多个输入的数据集合并成一个数据集,需要保证两个数据 集的格式一致,输出的数据集的格式和输入的数据集格式保持一致。
    Connect,Connect 算子主要是为了合并两种或者多种不同数据类型的数据集,合并后会保留原来 数据集的数据类型。
    Split 和 select,Split 算子是将一个 DataStream 数据集按照条件进行拆分,形成两个数据集的过程, 也是 union 算子的逆向实现。每个接入的数据都会被路由到一个或者多个输出数据集中。select 算子是选择指定标识的流。
    window,窗口算子

DataSet算子

    Map,将元素处理转换,再输出
    FlatMap, 将元素处理转换,再输出(可输出多个)
    Filter,过滤,保留条件成立的元素
    MapPartition,在单个函数调用中转换并行分区
    Reduce  , 聚合,将当前元素与上个元素聚合

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flink常用算子总结 的相关文章

  • Java知识点二

    20世纪90年代 硬件领域出现了单片式计算机系统 这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意 因为使用它可以大幅度提升消费类电子产品 如电视机顶盒 面包烤箱 移动电话等 的智能化程度 Sun公司为了抢占市场先机 在1991年

随机推荐

  • 【概率论】大数定律

    概要 首先介绍了切比雪夫不等式 然后介绍大数定律概念和3种大数定律及证明 切比雪夫不等式 已知随机变量X的期望EX和方差DX 对 可得的一个上界 解释 不论X服从什么分布 X在E x 的 邻域内取值的概率不小于1 Dx 2 证明 本质 随机
  • echarts 配置问题

    饼图标签重叠 超出 series type pie name 数据来源 radius 40 60 avoidLabelOverlap true 是否启用防止标签重叠策略 minAngle 20 最小的扇区角度 0 360 用于防止某个值过小
  • leetcode算法刷题:长度最小的子数组

    目录 题目如下 输入输出 思路 题目链接 209 长度最小的子数组 力扣 LeetCode 题目如下 输入输出 思路 使用快慢指针 设置指针end 和start指针 一开始end和start从0开始 以及区间最小长度minLen变量设为In
  • java怎么把字符串转换成日期类型

    1 java怎么把字符串转换成日期类型 2 Java如何将指定字符串转化为指定日期格式 3 求JAVA高手解答 有关于字符串类型转换成日期型 4 Java中怎么把字符串转换成日期格式啊 5 java中怎样将字符串转换成日期形式存入数据库 j
  • 3分钟即可了解 FHub中转站文件摆渡新技能

    说到文件摆渡的方式 有很多种 比较传统一点的 像U盘拷贝 FTP等 自动化一点的 像网闸 网盘等 还有一些企业会通过一些技术手段进行摆渡 比如防火墙技术等 这些方式都能在一定程度上解决跨隔离网文件摆渡的问题 为什么这么说呢 且听下文分析 1
  • java中堆栈(stack)和堆(heap)(还在问静态变量放哪里,局部变量放哪里,静态区在哪里.....进来)...

    内存分配的策略 按照编译原理的观点 程序运行时的内存分配有三种策略 分别是静态的 栈式的 和堆式的 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求 因而在编 译时就可以给他们分配固定的内存空间 这种分配策略要求程序代码
  • 联想万全服务器告警信息在哪里看,华为网络设备查看告警信息

    检查设备是否出现故障以及近期是否有重要的告警信息 前提条件 已经完成登录设备 操作步骤 执行命令display alarm all 查看所有活动的硬件告警信息 以判断设备是否发生故障 display alarm all Info NO al
  • Python运维开发:基于openstack RestfulAPI上传镜像和创建云主机

    基础环境 python 脚本文件头建议加入 encoding utf 8 避免编码错误 测试脚本代码用python3命令执行与测试 在linux系统中安装Python3 并安装request等依赖包 配置 有一台搭建好的open stack
  • CSS3渐变

    以前我们如果想要做到一个颜色到另一个颜色的渐变 Gradients 效果 需要用ps之类的应用程序做出一张背景图片 然后放到元素上 这样子不仅麻烦 而且不利于代码的维护 当用户界面大小发生改变时 显示效果也不好 CSS3提供给了我们一种渐变
  • 正定Hermiltian矩阵分解的两种方法

    对于正定Hermiltian矩阵 B B B 想要求解 D D D 使其满足
  • 单价数量和总价的公式_小学数量关系计算公式汇总,收藏起来写作业不用翻书了!...

    点击上方蓝字 关注我们 要想数学学得好 就要公式记得牢 公式是为了孩子更好的解题来用的 很多孩子数学学习过程中经常出现 平时不记 考试捉急 的现象 虽然数学是一门非常注重逻辑思维能力的一个学科 但是想要取得好的成绩 离不开基础知识的掌握 只
  • 【经典】SpringBoot 过滤器和拦截器

    过滤器 创建过滤器 MyFilter 实现Filter接口 实现doFilter方法 在SpringbootwebApplication java中添加一个过滤器注册方法 具体实现如下 如果要不拦截静态资源 则可以在Filter中设置 当然
  • 项目架构图

    前言 前段时间一直在找工作 面试过程终于到了不少问题 有些是自己会的 有些是自己看过却无法整理出来的 说到底是理解不够透彻 记忆不够深刻 当然还有些是完全懵逼的 下面就来说下经常被问及 自己却无法当场整理出来的一个问题 那就是让你画出自己做
  • DNS服务-笔记

    DNS 域名解析服务 PC访问DNS用的是 UDP 53端口 主辅同步数据用的是 TCP 53端口 工作原理 当解析一台主机域名时 首先会访问电信 网通等提供的DNS服务器地址上的DNS服务器 去访问 根域 也就是根域 大概有13台 然后根
  • 数字三角形之动态规划(C语言实现)

    算法步骤 1 首先构造三个数组 第一个是存储三角形初始值的数组data 第二个是存储顶点到该点最大值的res 数组 第三个是存储该点上一个点的loc 数组 这里要对res 数组进行初始化 1 2 按照三角形的层次结构 从上到下 从左到右依次
  • mysql存储过程游标之loop循环

    mysql存储过程游标 一共有3中循环方式 while repeat loop loop DELIMITER CREATE PROCEDURE DAY081002 BEGIN 定义参数 后面使用 DECLARE a INT DECLARE
  • 前端面试总结

    1 引言 最近参加了大量的招聘会 投递了大量的简历 整整体会了从 随便找个厂上一下 还是的找个大厂 没人要 急了急了 海投一波 工资有点尬 海投中 简单说一下自己的一些感受吧 现在的前端属实有点尴尬 前端的基础教程特别多 最开始本来是觉得自
  • Stata输出统计结果到Excel或word

    目录 一 安装外部包 二 相关命令 三 实例 1 描述性统计结果输出 2 相关性结果输入 3 回归结果输出 1 单模型结果 2 多模型结果 参考 一 安装外部包 在Stata内安装外部包 estout和logout ssc install
  • CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN

    摘要 本文从网络体系结构的角度出发 提出了跨阶段局部网络 CSPNet 来解决以往工作中需要大量推理计算的问题 本文将问题归结为网络优化中的重复梯度信息 所提出的网络通过从网络阶段的开始和结束集成特征映射来注重梯度的可变性 CSPNet易于
  • Flink常用算子总结

    Streaming 算子 Map 将元素处理转换 再输出 map算子对一个DataStream中的每个元素使用用户自定义的Mapper函数进行处理 每个输入元素对应一个输出元素 最终整个数据流被转换成一个新的DataStream 输出的数据