3.核心抽象

news2024/11/28 20:33:41

3.1 环境对象

  • StreamExecutionEnvironment是Flink应用开发时的概念,表示流计算作业的执行环境,是作业开发的入口、数据源接口、生成和转换DataStream的接口、数据Sink的接口、作业配置接口、作业启动执行的入口。
  • Environment 是 运 行 时 作 业 级 别 的 概 念 , 从StreamExecutionEnvironment中的配置信息衍生而来。
  • RuntimeContext是运行时Task实例级别的概念。RuntimeContext 的 信 息 实 际 上 是StreamExecutionEnvironment中配置信息和算子级别信息的综合。

StreamExecutionEnvironment在作业开发的Main函数中使用,RuntimeContext在UDF开发中使用,Environment则起到衔接StreamExecutionEnvironment和RuntimeContext的作用。

3.1.1 执行环境

当前版本Flink的批流在API并没有统一,所以有流计算(StreamExecutionEnvironment)和批处理(ExecutionEnvironment)两套执行环境。

  1. LocalStreamEnvironment:本地执行环境,在单个JVM中使用多线程模拟Flink集群。
  2. RemoteStreamEnvironment:在大规模数据中心中部署的Flink生成集群的执行环境。
  3. StreamContextEnvironment:在Cli命令行或者单元测试时候会被使用。
  4. StreamPlanEnvironment::在Flink Web UI管理界面中可视化展现Job的时候,专门用来生成执行计划(实际上就是StreamGraph)
  5. ScalaShellStreamEnvironment:这是Scala Shell执行环境,可以在命令行中交互式开发Flink作业。

3.1.2 运行时环境

  1. RuntimeEnvironment:在Task开始执行时进行初始化,把Task运行相关的信息都封装到该对象中。
  2. SavepointEnvironment:SavepointEnvironment是Environment的最小化实现,在状态处理器 的 API 中 使 用 。

3.1.3 运行时上下文

RuntimeContext是Function运行时的上下文,封装了Function运 行时可能需要的所有信息,让Function在运行时能够获取到作业级别的 信 息。

Function 的 每 个 实 例 都 有 一 个 RuntimeContext 对 象 , 在RichFunction中通过getRunctionContext()可以访问该对象。

3.2 数据流元素

数 据 流 元 素 在 Flink 中 叫 作 StreamElement , 有 数 据 记 录StreamRecord、延迟标记Latency Marker、Watermark、流状态标记StreamStatus这4种。

  1. StreamRecord:表示数据流中的一条记录(或者叫作一个事件)。
  2. LatencyMarker:用来近似评估延迟在 Sink 节 点 中 使 用LatencyMarker估计数据在整个DAG图中流转花费的时间,用来近似地评估总体上的处理延迟。
  3. Watermark:是一个时间戳,用来告诉算子所有时间早于等于Watermark的事件或记录都已经到达。
  4. StreamStatus:用来通知Task是否会继续接收到上游的记录或者Watermark。

3.3 数据转换

数据转换在Flink中叫作Transformation,是衔接DataStream API和Flink内核的逻辑结构。

Transformation 有 两 大 类 : 物 理 Transformation 和 虚 拟Transformation。在运行时刻,DataStream的API调用都会被转换为 Transformation,然后从Transformation转换为实际运行的算子,而虚拟的Transformation则不会转换为具体的算子

常见的物理Transformation有:

(1)SourceTransformation

(2)SinkTransformation

(3)OneInputTransformation:单流输入

(4)TwoInputTransformation:双流输入

虚拟的Transformation有:

(1)SideOutputTransformation:侧输出

(2)SplitTransformation:切分流

(3)SelectTransformation

(4)PartitionTransformation:改变输入元素的分区

(5)UnionTransformation

(6)FeedbackTransformation:表示Flink DAG中的一个反馈点。简单来说,反馈点就是把符合条件的数据重新发回上游Transformation处理。

(7)CoFeedbackTransformation:CoFeedBackTransformation 反 馈 给 上 游 的 数 据 流 与 上 游Transformation的输入类型不同



## 3.4 算子

(1)单流输入算子:该类型算子只接收上游1个数据流作为输入,一般的算子都属此类型。

(2)双流输入算子:该算子与TwoInputTransformation对应,接收上游2个不同的DataStream作为输入。**并不存在2个以上输入流的算子**。

(3)数据源算子

(4)异步算子AsyncWaitOperator:异步算子的目的是解决与外部系统交互时网络延迟所导致的系统瓶颈问题。

  (1)顺序输出模式

  (2)无序输出模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/843642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用自己域名进行远程访问内网群晖NAS 6.X

使用自己的域名远程访问内网群晖NAS 6.X【内网穿透】 文章目录 使用自己的域名远程访问内网群晖NAS 6.X【内网穿透】 在之前的文章中,我们向大家演示了如何使用cpolar,创建一条固定的、能够在公共互联网登录内网群晖NAS的数据隧道。这条隧道已经能够应对…

TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术、提供便捷快速的知识蒸馏框架、提升模型的推理速度,减少内存占用

TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术、提供便捷快速的知识蒸馏框架、提升模型的推理速度,减少内存占用 TextBrewer是一个基于PyTorch的、为实现NLP中的知识蒸馏任务而设计的工具包, 融合并改进了NLP和CV中的多种知识蒸馏技术&#xff0…

Bean基本注解开发和Bean依赖注入注解开发

目录 1.Bean基本注解开发 Component Scorelazy PostConstruct和PreDestroy RepositoryServiceController 2.Bean依赖注入注解开发 Value Autowired Qualifier Resource 扩展AutoWired 1.Bean基本注解开发 基本Bean注解,主要是使用注释的方式替代原有xml的…

记录--说一说css的font-size: 0

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 平常我们说的font-size:0;就是设置字体大小为0对吧,但是它的用处不仅仅如此哦,它还可以消除子行内元素间额外多余的空白! 问题描述&#xff…

Android前沿技术?Jetpack如何?

Jetpack Compose是Android开发领域的一项前沿技术,它提供了一种全新的方式来构建用户界面。近年来,Jetpack Compose在各大招聘等网站上的招聘岗位逐渐增多,薪资待遇也相应提高。本文将从招聘岗位的薪资与技术要求入手,分析Jetpack…

《Java-SE-第三十章》之哲学家就餐问题

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

mongodb-win32-x86_64-2008plus-3.4.24-signed.msi

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.4\binC:\MongoDB\Server\3.4\bin>C:\MongoDB\Server\3.4\bin>mongod --help Options:General options:-h [ --help ] …

窥探系列之Mybatis-plus XML分页查询

mybatisPlus分页查询原理 searchCount字段控制是否查询总记录数 com.baomidou.mybatisplus.plugins.PaginationInterceptor 该插件拦截sql,如果searchCounttrue,则使用sql解析包jsqlparser根据原sql生成count语句,另外关键

面对裁员风险,我们该如何提升体能素质?——探讨年龄与体能的关系

文章目录 每日一句正能量前言你现在身体的体能状况如何?你有身体焦虑吗?如何保持规律性运动?你有哪些健康生活的好习惯?后记 每日一句正能量 当你看不到别人的缺点时,你就能从别人的行为、语言、思想中得到无限的智慧。…

数据结构 | 利用二叉堆实现优先级队列

目录 一、二叉堆的操作 二、二叉堆的实现 2.1 结构属性 2.2 堆的有序性 2.3 堆操作 队列有一个重要的变体,叫作优先级队列。和队列一样,优先级队列从头部移除元素,不过元素的逻辑顺序是由优先级决定的。优先级最高的元素在最前&#xff…

【程序环境与预处理玩转指南】

本章重点: 程序的翻译环境 程序的执行环境 详解:C语言程序的编译链接 预定义符号介绍 预处理指令 #define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令 #include 预处理指令 #undef 条件编译 1. 程序的翻译环境和执行环境 在…

Java基础入门篇——IntelliJ IDEA下载与安装(四)

IntelliJ IDEA是一款流行的Java集成开发环境(IDE),由JetBrains公司开发。你可以按照以下步骤下载和安装IntelliJ IDEA: 一、下载 访问官方网站:打开浏览器,访问JetBrains的官方网站。你可以直接在搜索引擎…

SAP MM学习笔记15-物料调达中的Master数据(2)-品目Master

SAP中做一个购买发注的时候,涉及到以下Master数据: 1,仕入先Master(供应商):跟谁买 2,品目Master(物料):买什么 3,购买情报:什么价…

MONGODB ---- Austindatabases 历年文章合集

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

过滤器和拦截器的六大区别

平时觉得简单的知识点,但通常都不会太关注细节,一旦被别人问起来,反倒说不出个所以然来。真的就是一看就会一说就废。下面带大家一起结合实践来区分过滤器和拦截器吧~ 通俗理解: (1)过滤器(Fil…

CMake 3.13.4 or higher is required. You are running version 3.10.2

ubuntu 安装 cmake,但是apt安装的版本太低,需要其他安装方法。 参考视频 https://www.youtube.com/watch?v_yFPO1ofyF0 以下是对视频内容的提炼,就两点 1、下载需要版本的sh文件;2、安装 一、下载需要版本的sh文件 https://cma…

【ArcGIS Pro二次开发】(58):数据的本地化存储

在做村规工具的过程中,需要设置一些参数,比如说导图的DPI,需要导出的图名等等。 每次导图前都需要设置参数,虽然有默认值,但还是需要不时的修改。 在使用的过程中,可能会有一些常用的参数,希望…

shell 入门练习小记

一、hello world #!/bin/bash echo "Hello World !"#! 为约定的标记,告诉系统这个脚本需要什么解释器执行,后接绝对路径 /bin/bash 表示期望 bash去解析并运行shell echo用于向窗口输出文本 chmod x ./test.sh #给脚本赋执行权限 ./test.sh …

Leetcode-每日一题【剑指 Offer 10- II. 青蛙跳台阶问题】

题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输…

Linux命令200例:tr用于对输入的文本进行字符转换、删除、替换等

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…