Flink DataSet分配唯一标识符

2024-06-03 13:48

本文主要是介绍Flink DataSet分配唯一标识符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

专栏原创出处:github-源笔记文件 ,github-源码 ,欢迎 Star,转载请附上原文出处链接和本声明。

DataSet分配唯一标识符

在某些算法中,可能需要为数据集元素分配唯一标识符。[[org.apache.flink.api.scala.utils.DataSetUtils]] scala 包装类
具体实现源码可参考 DataSetUtils

zipWithIndex 方式分配

为元素分配连续的标签,接收数据集作为输入并返回 DataSet[(Long, T)] 2 元组的新数据集。
此过程需要两步操作,首先是计数,然后是标记元素,由于计数同步,因此无法进行流水线处理。
替代方法 zipWithUniqueId 以流水线方式工作,当唯一的标签足够时,它是首选方法。

zipWithUniqueId 方式分配

在许多情况下,可能不需要分配连续的标签。
zipWithUniqueId 以管道方式工作,加快了标签分配过程。
此方法接收一个数据集作为输入,并返回一个新的 DataSet[(Long, T)] 2 元组数据集

代码示例 ZippingElements :

import io.gourd.flink.scala.api.BatchExecutionEnvironmentApp/** 在某些算法中,可能需要为数据集元素分配唯一标识符。* 本文档说明了如何将* [[org.apache.flink.api.scala.utils.DataSetUtils]]* [[org.apache.flink.api.java.utils.DataSetUtils.zipWithIndex()]]* [[org.apache.flink.api.java.utils.DataSetUtils.zipWithUniqueId()]]* 用于此目的。** @author Li.Wei by 2019/11/12*/
object ZippingElements extends BatchExecutionEnvironmentApp {import org.apache.flink.api.scala._val input: DataSet[String] = bEnv.fromElements("A", "B", "C", "D", "E", "F", "G", "H")bEnv.setParallelism(2)/*zipWithIndex 为元素分配连续的标签,接收数据集作为输入并返回 DataSet[(Long, T)] 2 元组的新数据集。此过程需要两步操作,首先是计数,然后是标记元素,由于计数同步,因此无法进行流水线处理。替代方法 zipWithUniqueId 以流水线方式工作,当唯一的标签足够时,它是首选方法。*/import org.apache.flink.api.scala.utils.DataSetUtilsinput.zipWithIndex.print()
/*
(0,A)
(1,B)
(2,C)
(3,D)
(4,E)
(5,F)
(6,G)
(7,H)*/println()/*在许多情况下,可能不需要分配连续的标签。zipWithUniqueId 以管道方式工作,加快了标签分配过程。此方法接收一个数据集作为输入,并返回一个新的 DataSet[(Long, T)] 2 元组数据集本机执行,未发生并行,实际情况参考分布式测试结果*/input.zipWithUniqueId.print()/*
(0,A)
(1,B)
(2,C)
(3,D)
(4,E)
(5,F)
(6,G)
(7,H)*/
}

这篇关于Flink DataSet分配唯一标识符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027159

相关文章

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

nginx upstream六种方式分配小结

《nginxupstream六种方式分配小结》本文主要介绍了nginxupstream六种方式分配小结,包括轮询、加权轮询、IP哈希、公平轮询、URL哈希和备份服务器,具有一定的参考价格,感兴趣的可... 目录1 轮询(默认)2 weight3 ip_hash4 fair(第三方)5 url_hash(第三

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

Flink任务重启策略

概述 Flink支持不同的重启策略,以在故障发生时控制作业如何重启集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。如果在工作提交时指定了一个重启策略,该策略会覆盖集群的默认策略默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。配置参数 restart-strategy 定义了哪个策略被使用。常用的重启策略: 固定间隔 (Fixe

集群环境下为雪花算法生成全局唯一机器ID策略

雪花算法是生成数据id非常好的一种方式,机器id是雪花算法不可分割的一部分。但是对于集群应用,让不同的机器自动产生不同的机器id传统做法就是针对每一个机器进行单独配置,但这样做不利于集群水平扩展,且操作过程非常复杂,所以每一个机器在集群环境下是一个头疼的问题。现在借助spring+redis,给出一种策略,支持随意水平扩展,肥肠好用。 大致策略分为4步: 1.对机器ip进行hash,对某一个(大于

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes 优势 1、构建了一个用于监督原始视频去噪的基准数据集。为了多次捕捉瞬间,我们手动为对象s创建运动。在高ISO模式下捕获每一时刻的噪声帧,并通过对多个噪声帧进行平均得到相应的干净帧。 2、有效的原始视频去噪网络(RViDeNet),通过探

操作系统是怎么为不同的程序分配所需的内存空间的

操作系统为不同的程序分配内存空间的过程涉及多个关键步骤,确保每个程序都有其所需的内存资源,同时避免程序之间的冲突。以下是操作系统如何为程序分配内存空间的详细过程: 1. 内存管理的基础概念 虚拟内存:现代操作系统使用虚拟内存机制来为程序提供隔离的内存空间。每个程序运行在其独立的虚拟地址空间中,这使得程序间的内存互不干扰。物理内存:实际的 RAM(随机存取存储器),由操作系统和硬件共同管理。虚拟

利用PL/SQL工具如何给指定用户分配权限

选中指定的表--右键--编辑--就出现右边的内容了,选择权限,分配用户某个权限就行了;

【go】内存分配模型

内存是怎么分配给对象的? 内存分配优化的地方是? 讲讲golang内存分配模型? ans: 1.按照对象的大小分配:先算出对象的大小如果是tiny对象,就从tiny block中获取地址和偏移量,将对象打包到mcache;如果是16B以上32k以内就先从mcache获得对应class级别的span;如果mcache没有就从mcenter中获取,如果mcenter没有就创建一个mspan从