【API篇】四、Flink物理分区算子API

文章目录

  • 1、 分区算子:随机分区
  • 2、分区算子:轮询分区
  • 3、分区算子:重缩放分区
  • 4、分区算子:广播
  • 5、分区算子:全局分区
  • 6、自定义分区

重分区,即数据"洗牌",将数据分配到下游算子的并行子任务中。常见的分区策略有:

  • 随机分区
  • 轮询分区
  • 重缩放分区
  • 广播
  • 全局分区
  • 自定义分区

1、 分区算子:随机分区

调用DataStream的.shuffle()方法,将数据随机地分配到下游算子的并行任务中去。

在这里插入图片描述

demo代码:socket模拟无界流,设置并行度为2,读入数据后接shuffle,再打印

public class ShuffleExample {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(2);DataStreamSource<Integer> stream = env.socketTextStream("node01", 9527);stream.shuffle().print()env.execute();}
}

可以看到,数据流经过shuffle重分区后,到输出算子的哪个子任务是随机的:

在这里插入图片描述

2、分区算子:轮询分区

用DataStream的.rebalance()方法,rebalance使用的是Round-Robin负载均衡算法,就像发牌,将输入流数据平均分配到下游的并行任务中去。

在这里插入图片描述

stream.rebalance().下游算子....

3、分区算子:重缩放分区

和轮询相似,不同的是,重缩放是局部轮询,只给和它组队的分区轮询数据,而不是给所有分区。(调用rescale方法时,其实底层也是使用Round-Robin算法进行轮询)

在这里插入图片描述

stream.rescale().下游算子...

4、分区算子:广播

通常,一条数据去往一个子任务去处理即可,但广播就是:调用DataStream的broadcast()方法,将输入数据复制并发送到下游算子的所有并行任务中去

stream.broadcast().print();

在这里插入图片描述

5、分区算子:全局分区

极端的分区方式,会将数据流中的数据全都发送到下游算子的第一个子任务中去, 相当于强行让下游任务并行度变成了1(注意是相当于,不是真把下游算子并行度改成1了,只是不往其他子任务发数据了,其他有跟没有一样了)

stream.global().print();

发送数据:

在这里插入图片描述

效果:

在这里插入图片描述

6、自定义分区

以上的Flink分区策略都不满足需求时,可自定义分区策略,首先实现Partitioner接口,自定义分区器:

public class MyPartitioner implements Partitioner<String> {@Overridepublic int partition(String key, int numPartitions) {return Integer.parseInt(key) % numPartitions;}
}//numPartitions 下游算子并行度
//这里的分区策略,简单写个key除以算子并行度取余
//该方法返回的是分区索引

使用自定义分区器:

public class PartitionCustomDemo {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration());env.setParallelism(2);DataStreamSource<String> socketDS = env.socketTextStream("node01", 9527);DataStream<String> myDS = socketDS.partitionCustom(new MyPartitioner(),value -> value);myDS.print();env.execute();}
}
  • 自定义分区用的api是partitionCustom
  • partitionCustom方法第一个参数是自定义的分区器对象
  • 第二个参数是key的选择器对象KeySelector,和keyBy方法一样,value -> value即以输入数据为key

到此,就实现了数据往下游算子的子任务分配时,按什么规则来分。以上就是Flink的常用分区策略,此外,还有一种one-to-one的分区器,带上自定义分区器,共8种:

在这里插入图片描述

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

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

相关文章

Apache Shiro 组件反序列化漏洞分析

概述 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 它的原理比较简单&#xff1a;为了让浏览器或服务器重启后用户不丢失…

嵌入式实时操作系统的设计与开发 (中断管理)

中断发生及响应 硬件抽象HAL层响应 中断请求IRQ被中断控制器汇集成中断向量&#xff08;Interrupt Vector&#xff09;&#xff0c;每个中断向量对应一个中断服务程序ISR&#xff0c;中断向量存放了ISRs的入口地址或ISRs的第一条指令。 系统中通常包含多个中断向量&#xff0…

Linux-ssh

文章目录 远程登录服务器配置远程服务器相关信息创建config文件配置config文件 配置密钥登陆先创建密钥配置密钥文件 执行命令scp传文件copy文件copy文件夹配置我们的vim和tmux 远程登录服务器 ssh userhostnameuser:用户名hostname&#xff1a;IP地址或域名 第一次登陆会显示…

Linux权限基础知识

前言&#xff1a;作者也是初学Linux&#xff0c;可能总结的还不是很到位 Linux修炼功法&#xff1a;初阶功法 ♈️今日夜电波&#xff1a;修炼爱情 —林俊杰 0:30━━━━━━️&#x1f49f;──────── 4:47 …

MySQL——七、MySQL备份恢复

MySQL 一、MySQL日志管理1、MySQL日志类型2、错误日志3、通用查询日志4、慢查询日志5、二进制日志5.1 开启日志5.2 二进制日志的管理5.3 日志查看5.4 二进制日志还原数据 二、MySQL备份1、备份类型逻辑备份优缺点 2、备份内容3、备份工具3.1 MySQL自带的备份工具3.2 文件系统备…

大模型,重构自动驾驶

文&#xff5c;刘俊宏 编&#xff5c;王一粟 大模型如何重构自动驾驶&#xff1f;答案已经逐渐露出水面。 “在大数据、大模型为特征&#xff0c;以数据驱动为开发模式的自动驾驶3.0时代&#xff0c;自动驾驶大模型将在车端、云端上实现一个统一的端到端的平台管理。”毫末智…

【CesiumforUnreal插件】UE5 快速构建Cesium场景 快速入门!!!

目录 0 引言1 快速入门1.1 准备1.2 安装Cesium for Unreal插件并创建一个项目1.3 准备关卡并添加地形和纹理1.4 添加3D建筑到场景中1.5 探索场景 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;CesiumforUnreal专栏&#x1f4a5; 标题&#xff1a…

如何转换Corona和Vray材质?cr材质转vr材质的方法

cr材质转vr材质的方法一&#xff1a;使用CG Magic插件&#xff0c;一键转换 CG Magic是一款基于3ds Max深度开发的智能化辅助插件&#xff0c;上千项实用功能&#xff0c;降低渲染时长&#xff0c;节省时间和精力&#xff0c;大幅简化工作流程&#xff0c;助力高效完成创作。 …

【Tomcat】为Tomcat服务配置本地Apr库以提升性能

关于 apr 和 apr-util 对 Tomcat 服务的性能提升的说明&#xff1a; 要测APR给tomcat带来的好处最好的方法是在慢速网络上&#xff08;模拟Internet&#xff09;&#xff0c;将Tomcat线程数开到300以上的水平&#xff0c;然后模拟一大堆并发请求。如果不配APR&#xff0c;基本…

SpringBoot2.x简单集成Flowable

环境和版本 window10 java1.8 mysql8 flowable6 springboot 2.7.6 配置 使用IDEA创建一个SpringBoot项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.…

远程开户身份证识别OCR技术:革新传统流程,实现高效身份验证

远程开户是指通过互联网或其他远程通信方式&#xff0c;不需要亲自前往银行、证券公司或其他金融机构的实体营业网点&#xff0c;即可完成开立账户和办理相关服务的过程。 相比传统柜台开户方式&#xff0c;远程开户具有更高的便利性和灵活性。它使得用户可以随时随地通过网络…

基于PHP的创意设计分享系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

【故障诊断】用于轴承故障诊断的候选故障频率优化克改进包络频谱研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

微信小程序完整项目实战(前端+后端)

基于微信小程序的在线商城点单系统 前言&#xff1a;闲来无事&#xff0c;想以后自己开一个小超市或者小吃店&#xff0c;能够支持线上下单&#xff0c;既方便客户也方便自己。系统采用Java语言作为后端实现与小程序的交互&#xff0c;给用来学习或者想自己开个小店的朋友当个参…

在亚马逊云科技Amazon SageMaker上进行Stable Diffusion模型训练和推理

Stable Diffusion Quick Kit是一个基于亚马逊云科技Amazon SageMaker进行Stable Diffusion模型快速部署的工具包&#xff0c;包括了一组示例代码、服务部署脚本、前端UI&#xff0c;可以帮助可以快速部署一套Stable Diffusion的原型服务。 本文将介绍如何在SageMaker Training …

服务器中了mkp勒索病毒怎么处理,mkp勒索病毒解密,数据恢复

10月份以来&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的服务器遭到了mkp勒索病毒攻击&#xff0c;导致企业的服务器数据库被加密&#xff0c;严重影响了企业工作&#xff0c;通过这一波mkp勒索病毒的攻击&#xff0c;云天数据恢复工程师为大家总结了…

【AI视野·今日Sound 声学论文速览 第二十六期】Mon, 16 Oct 2023

AI视野今日CS.Sound 声学论文速览 Mon, 16 Oct 2023 Totally 7 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Low-latency Speech Enhancement via Speech Token Generation Authors Huaying Xue, Xiulian Peng, Yan Lu现有的基于深度学习的语音增强…

中文编程开发语言工具开发的实际软件案例:称重管理系统软件

中文编程开发语言工具开发的实际软件案例&#xff1a;称重管理系统软件 中文编程开发语言工具开发的实际软件案例&#xff1a;称重管理系统软件&#xff0c;软件可以安装在电脑上&#xff0c;也可以安装在收银机上&#xff0c;支持触摸和鼠标点&#xff0c;想学编程可以关注系统…

【web前端】web前端设计入门到实战第一弹——html基础精华

前端 一&#xff1a;图片属性二&#xff1a;音频标签三&#xff1a; 视频标签四&#xff1a;链接标签五&#xff1a;列表标签5.1.无序列表5.2.有序列表3.自定义列表 六&#xff1a;表格6.1合并单元格 七&#xff1a;input标签八&#xff1a;select系列九&#xff1a; 文本域标签…

《软件方法》2023版第1章(10)应用UML的建模工作流-大图

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.1 概念 我用类图表示建模工作流相关概念如图1-16。 图1-16 建模工作流相关概念 图1-16左侧灰色部分定义了“游戏规则”&#xff0c;右侧则是在“游戏规…