spark常用RDD算子 - foldByKey

news/2025/5/21 21:08:32

foldByKey函数是对PairRDD<K, V>,对V做合并处理

可以看到,第一个参数是zeroValue,这个就是用来对原始的V做合并操作的,后面的参数是一个JFunction操作。

对于一个PairRDD,如Array(("A",0),("A",2),("B",1),("B",2),("C",1))
进行foldByKey(2)、并且function是x+y的操作时,运算过程是这样的,
先将2去加上key为"A"的第一个元素的value,变成了("A", 2),然后拿这个初始化的结果再去执行"A"与后续元素,结果就是("A", 4)。
对于key为"B"的结果就是("B", 5)

foldByKey 算子代码示例

List<Tuple2<String, Integer>> data = new ArrayList<>();
data.add(new Tuple2<>("A", 10));
data.add(new Tuple2<>("A", 20));
data.add(new Tuple2<>("B", 2));
data.add(new Tuple2<>("B", 3));
data.add(new Tuple2<>("C", 5));//2*10*20 =400
//2*2*3=12
//2*5=10JavaPairRDD<String, Integer> originRDD = javaSparkContext.parallelizePairs(data);
//初始值为2,那么就会将2先与第一个元素做一次Function操作,将结果再与下一个元素结合
JavaPairRDD<String, Integer> stringIntegerJavaPairRDD = originRDD.foldByKey(2, new Function2<Integer, Integer, Integer>() {@Overridepublic Integer call(Integer v1, Integer v2) throws Exception {return v1 * v2;}});System.out.println(stringIntegerJavaPairRDD.collect());
//foldByKey算子运行的结果如下
//[(B,12), (A,400), (C,10)]

 

文章来源:https://blog.csdn.net/qq_41712271/article/details/107748762
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-18439.html

相关文章

SpringBoot整合Shiro+Redis框架权限管理

SpringBoot整合ShiroRedis框架权限管理一、导入依赖二、Config类2.1、自定义realm2.2、自定义AuthorizationFilter2.3、自定义SessionIdGenerator2.4、自定义DefaultWebSessionManager2.5、ShiroConfig三、登陆注册及其他接口3.1、Controller层3.2、Service层3.2.1、UserServic…

【Lucene4.8教程之二】索引

一、基础内容 0、官方文档说明 &#xff08;1&#xff09;org.apache.lucene.index provides two primary classes: IndexWriter, which creates and adds documents to indices; and IndexReader, which accesses the data in the index. &#xff08;2&#xff09;涉及的两…

自制AutoMapper实现DTO到持久层Entity的转换

项目中经常涉及到页面DTO更新&#xff0c;保存到数据库的操作&#xff0c;这就必然牵扯到DTO和持久层对象的转换&#xff0c;常见的第三方库有&#xff1a; java&#xff1a;dozer .net: AutoMapper 看到AutoMapper已经许久没更新了&#xff0c;而且项目中没必要用这么大的东西…

spark常用RDD算子 - SortByKey

SortByKey用于对pairRDD按照key进行排序&#xff0c;第一个参数可以设置true或者false&#xff0c;默认是true List<Tuple2<String, Integer>> data new ArrayList<>(); data.add(new Tuple2<>("A", 10)); data.add(new Tuple2<>(…

Nginx安装及使用

Nginx安装及使用一、Nginx的安装网址二、windows下安装1、启动方式一2、启动方式二3、运行成功画面4、配置监听5、关闭nginx的两种方式三、Linux下安装四、后端负载均衡策略和反向代理实战1、编辑conf/nginx.conf2、代码3、测试一、Nginx的安装网址 安装网址 二、windows下安装…

成功路很多,选对放心日赚几百不是问题

俗话说的好&#xff1a;“三百六十行&#xff0c;行行出状元”“人挪活&#xff0c;树挪死”。我从小就是个爱冒险的人&#xff0c;不喜欢千篇一律的固定模式。可是&#xff0c;在我人生的前二十七年中&#xff0c;我却一直这样循规蹈矩的活着。 我出生在苏州一个知识分子的家庭…

spark常用RDD算子 - groupByKey

groupByKey是对单个 RDD 的数据进行分组 def groupByKey(): RDD[(K, Iterable[V])] def groupByKey(numPartitions: Int): RDD[(K, Iterable[V])] def groupByKey(partitioner: Partitioner): RDD[(K, Iterable[V])] groupByKey会将RDD[key,value] 按照相同的key进行分组&…

SpringBoot整合RabbitMQ消息中间件及多种设计模式

SpringBoot整合RabbitMQ消息中间件及多种设计模式1、介绍与安装下载1.1、不同MQ特点1.2、下载1.3、打开网址2、使用可视化配置2.1、创建交换机2.2、创建队列2.3、来宾用户详情2.4、创建来宾用户2.5、用户与虚拟主机进行绑定2.6、创建虚拟主机3、五种常用的模式3.1、导入依赖3.2…

LCHub:ChatGPT4和低代码来临,程序员面临下岗?

一个网友吐槽道: “ 建站出来了,你们说程序员会失业。 低代码出来了,你们说程序员会失业。 Copilot出来了,你们说程序员会失业。 Chatgpt出来了,你们说程序员会失业 虽然这只是网友的吐槽,但却引起了小编的好奇。为何程序员那么容易被新技术取代?今天小编打算跟大家…

运行Applet程序

[操作方法1&#xff1a;]① 编辑源程序welcome.java。② 编译程序 javac welcome.java③ 将Applet嵌入HTML网页。方法是&#xff0c;用记事本创建一个文件&#xff0c;文件内容如下&#xff1a;<applet codewelcome.java width360 height120></applet> 注意指定路…