上一篇是讲map,map的主要作用就是替换。reduce的主要作用就是计算。

package reduce;import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SparkSession;
import scala.Tuple2;import java.util.Arrays;
import java.util.List;/*** @author wuweifeng wrote on 2018/4/13.*/
public class SimpleReduce {public static void main(String[] args) {SparkSession sparkSession = SparkSession.builder().appName("JavaWordCount").master("local").getOrCreate();//spark对普通List的reduce操作JavaSparkContext javaSparkContext = new JavaSparkContext(sparkSession.sparkContext());List<Integer> data = Arrays.asList(1, 2, 3, 4, 5);JavaRDD<Integer> originRDD = javaSparkContext.parallelize(data);Integer sum = originRDD.reduce((a, b) -> a + b);System.out.println(sum);//reduceByKey,按照相同的key进行reduce操作List<String> list = Arrays.asList("key1", "key1", "key2", "key2", "key3");JavaRDD<String> stringRDD = javaSparkContext.parallelize(list);//转为key-value形式JavaPairRDD<String, Integer> pairRDD = stringRDD.mapToPair(k -> new Tuple2<>(k, 1));List list1 = pairRDD.reduceByKey((x, y) -> x + y).collect();System.out.println(list1);}
}

代码很简单,第一个就是将各个数累加。reduce顺序是1+2,得到3,然后3+3,得到6,然后6+4,依次进行。

第二个是reduceByKey,就是将key相同的键值对,按照Function进行计算。代码中就是将key相同的各value进行累加。结果就是[(key2,2), (key3,1), (key1,2)]

2 Spark入门reduce、reduceByKey的操作相关推荐

  1. java reducebykey_Spark入门(五)--Spark的reduce和reduceByKey

    reduce和reduceByKey的区别 reduce和reduceByKey是spark中使用地非常频繁的,在字数统计中,可以看到reduceByKey的经典使用.那么reduce和reduceB ...

  2. spark 的reduce操作

    spark的reduce聚合操作,输入是两个值,输出是一个值,第一第二个值的结果跟第三个值相加,然后前n个数的值和第n个值相加 见代码如下: public static void myReduce() ...

  3. Spark入门系列(二)| 1小时学会RDD编程

    作者 | 梁云1991 转载自Python与算法之美(ID:Python_Ai_Road) 导读:本文为 Spark入门系列的第二篇文章,主要介绍 RDD 编程,实操性较强,感兴趣的同学可以动手实现一 ...

  4. Spark入门(Python)

    Hadoop是对大数据集进行分布式计算的标准工具,这也是为什么当你穿过机场时能看到"大数据(Big Data)"广告的原因.它已经成为大数据的操作系统,提供了包括工具和技巧在内的丰 ...

  5. Spark入门阶段一之扫盲笔记

    介绍 spark是分布式并行数据处理框架 与mapreduce的区别: mapreduce通常将中间结果放在hdfs上,spark是基于内存并行大数据框架,中间结果放在内存,对于迭代数据spark效率 ...

  6. Spark入门(Python版)

    Hadoop是对大数据集进行分布式计算的标准工具,这也是为什么当你穿过机场时能看到"大数据(Big Data)"广告的原因.它已经成为大数据的操作系统,提供了包括工具和技巧在内的丰 ...

  7. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.Spark Streaming简介 1.1 概述 Spark Streaming 是Sp ...

  8. Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spa ...

  9. 数据分析从零到精通第二课 Hive和Spark入门

    03 离线利器:大数据离线处理工具 Hive 的常用技巧 今天为你介绍数据分析师最常用的数据处理工具 Hive 的一些使用技巧.这些技巧我们在工作中使用得比较频繁,如果运用得当,将为我们省去不少时间精 ...

最新文章

  1. 西门子PLC学习笔记二-(工作记录)
  2. CodeForces 86 D Powerful array 莫队
  3. 第二次作业 郭昭杰 201731062608
  4. 摩托罗拉移动员裁员重点是研发
  5. python可以直接打印中午吗_Python print不能立即打印的解决方式
  6. 3.1.4 操作系统之内存的分配与回收
  7. windows - mysql
  8. PrimeFaces在GlassFish 3.1.2.2上推动大气
  9. 人民邮电出版社图灵公司的两本SQL Server 2005图书诚征译者
  10. Ajax无刷新数据绑定
  11. linux 截图软件安装,Ubuntu 安装截图工具Shutter,并设置快捷键 Ctrl+Alt+A
  12. 百度地图、腾讯地图坐标转换
  13. 苹果手机备份数据到电脑什么位置 iPhone备份到电脑上的东西在哪里
  14. 慕课网-哒哒租车系统
  15. Chap.16 总结《CL: An Introduction》 (Vyvyan Evans)
  16. FB_LLC 死区时间计算(保证ZVS)
  17. NUIST2022级第一周集训
  18. 在html中超链接的标记是,在HTML代码中,超链接元素的标记是什么?
  19. 老司机带你快速熟悉Swift 4.1(一)
  20. 机器学习(周志华)算法目录

热门文章

  1. 春花送远香——深度学习之单元设计
  2. 通过后台事件直接调另一个页面的按钮事件,__EVENTVALIDATION,_VIEWSTATE
  3. java finalize逃脱_Java对象回收与finalize方法
  4. aircrack打开方式
  5. 【算法】用一行PHP代码画一个心形
  6. 2020年保研历程汇总(计算机科学与技术专业)
  7. M91E经济型布控球特价布控球4G高清布控球使用方法
  8. 视觉差效果制作总结和案例下载
  9. 排列组合算法总结(基于C++实现)
  10. 我国虚拟现实产业集群化发展提速,元宇宙落地场景将推动数字经济蓬勃发展