Flink基础系列20-数据重分区操作
文章目录
- 一.数据重分区
- 参考:
一.数据重分区
重分区操作,在DataStream类中可以看到很多Partitioner字眼的类。
其中partitionCustom(…)方法用于自定义重分区。
测试代码:
package org.flink.transform;/*** @author 只是甲* @date 2021-08-31* @remark Flink 基础Transform 重分区*/import org.flink.beans.SensorReading;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;public class TransformTest6_Partition {public static void main(String[] args) throws Exception{// 创建执行环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// 设置并行度 = 4env.setParallelism(4);// 从文件读取数据DataStream<String> inputStream = env.readTextFile("C:\\Users\\Administrator\\IdeaProjects\\FlinkStudy\\src\\main\\resources\\sensor.txt");// 转换成SensorReading类型DataStream<SensorReading> dataStream = inputStream.map(line -> {String[] fields = line.split(",");return new SensorReading(fields[0], new Long(fields[1]), new Double(fields[2]));});// SingleOutputStreamOperator多并行度默认就rebalance,轮询方式分配dataStream.print("input");// 1. shuffle (并非批处理中的获取一批后才打乱,这里每次获取到直接打乱且分区)DataStream<String> shuffleStream = inputStream.shuffle();shuffleStream.print("shuffle");// 2. keyBy (Hash,然后取模)dataStream.keyBy(SensorReading::getId).print("keyBy");// 3. global (直接发送给第一个分区,少数特殊情况才用)dataStream.global().print("global");env.execute();}
}
测试记录:
如下截图可以看到:
- input标记的是rebalance,均匀分布
- global全部都分配到进程1了
- keyBy非均匀分布 sensor_1 全部都分配到了进程1
- shuffle 就有点随机了
参考:
- https://www.bilibili.com/video/BV1qy4y1q728
- https://ashiamd.github.io/docsify-notes/#/study/BigData/Flink/%E5%B0%9A%E7%A1%85%E8%B0%B7Flink%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E6%88%98-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0?id=_521-%e4%bb%8e%e9%9b%86%e5%90%88%e8%af%bb%e5%8f%96%e6%95%b0%e6%8d%ae
Flink基础系列20-数据重分区操作相关推荐
- 夯实Java基础系列20:从IDE的实现原理聊起,谈谈那些年我们用过的Java命令
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Flink基础系列17-Tranform之多流转换算子
文章目录 一.多流转换算子概述 1.1 Split和Select 1.2 Connect和CoMap 1.3 Union 二.代码实现 参考: 一.多流转换算子概述 多流转换算子一般包括: Split ...
- Flink基础系列8-Flink on yarn运行wordcount程序
文章目录 环境介绍 一.Maven配置 二.Java代码编写 三.Maven打包并上传 四.运行jar文件 五.运行其它的class文件 参考 环境介绍 测试服务器CDH 6.3.1版本安装Flink ...
- Flink基础系列7-通过Web UI执行jar文件
文章目录 环境准备 一.准备代码 1.1 maven准备 1.2 Java代码准备 二.打包 三.通过Web UI执行jar文件 3.1 上传文件 环境准备 本地Windows环境已安装Flink 1 ...
- php基础系列之 数据的存储和读取
·文件处理 ·写入一个文件 1,打开这个文件.如果这个文件不存在,需要先创建它 2,将数据写入这个文件 3,关闭这个文件 ·从一个文件读出数据 1,打开这个文件.如果这个文件不能打开(例如,文件不存在 ...
- Flink基础系列6-flink run参数
执行 flink run 后参数: 参数说明 Action "run" compiles and runs a program. Syntax: run [OPTIONS] < ...
- 大数据入门基础系列之初步认识大数据生态系统圈(博主推荐)
不多说,直接上干货! 之前在微信公众平台里写过 大数据入门基础系列之初步认识hadoop生态系统圈 http://mp.weixin.qq.com/s/KE09U5AbFnEdwht44FGrOA 大 ...
- 大数据基础系列 5:Hadoop 实验——熟悉常用的 HDFS 目录操作和文件操作
文章目录 前言 一.实验目的 二.实验平台 三.实验内容和要求 3.1.HDFS 目录操作 3.1.1.创建用户目录 3.1.2.显示 HDFS 中与当前用户对应的目录内容 3.1.3.列出 HDFS ...
- STM32 基础系列教程 20 - RTC
前言 学习stm32 RTC(实时时钟)的使用,学会用RTC实现钟表功能. 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm3 ...
最新文章
- LeetCode简单题之打折购买糖果的最小开销
- C# WinForm获取当前路径汇总
- 浅谈Struts2和Sturts1的区别
- PercentFrameLayout(百分比布局)的基本使用
- Java虚拟机(JVM)参数配置说明
- docker lnmp php
- PHP错误:Warning: preg_replace() [function.preg-replace]: Unknown modifier '[' in
- Android 功耗优化(13)---功耗基础知识
- scala学习-Description	Resource	Path	Location	Type value toDF is not a member of org.apache.spark.rdd.R
- java的joptionpane空白_java – JOptionPane无法正确显示?
- 如何获得select被选中option的value和text和......
- 简易呼吸灯c语言程序,51单片机(呼吸灯)C语言版
- KindEditor上传图片和修改图片
- Maya界面编程入门:在Maya中使用Qt
- 输入一个大写字母,打印菱形
- python求一个数所有因数
- 怎样配置炒股用的计算机,炒股专用电脑配置
- 【蓝桥杯集训·每日一题】AcWing 3777. 砖块
- 在等吴恩达深度学习第5课的时候,你可以先看看第4课的笔记
- 用 FC FOR nexenta 山寨SAN存储
热门文章
- web前端之html图片操作详解从零开始(三)----img标签
- Java+Aspose.diagram,导出数据到Visio
- 【阿里云资讯】如何让云计算安全变得更“聪明”
- NeurIPS 2022 | FSD:全稀疏的3D目标检测器(中科院图森未来)
- PySCENIC(三):pyscenic单细胞转录因子分析可视化
- clientX、offsetX、layerX、screenX、pageX、x的区别
- 解释清楚常见网络设备的部署模式及优缺点
- 莫言称获奖是文学的胜利 批判社会黑暗凌厉严肃-莫言-诺贝尔文学奖-出国
- 2021各高校计算机保研夏令营经验贴
- TortoiseSVN部分Checkout以及删除本地Checkout目录而不影响仓库