首先看一段代码

    public static void cogroup2() {// 创建SparkConfSparkConf sparkConf = new SparkConf().setAppName("cogroupJava").setMaster("local");// 创建JavaSparkContextJavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);// 创建集合List<Tuple2<String, Integer>> words1 = Arrays.asList(new Tuple2<String, Integer>("hello", 1),new Tuple2<String, Integer>("hello", 1),new Tuple2<String, Integer>("world", 1),new Tuple2<String, Integer>("hello", 1),new Tuple2<String, Integer>("you", 1));List<Tuple2<String, Integer>> words2 = Arrays.asList(new Tuple2<String, Integer>("hello", 1),new Tuple2<String, Integer>("world", 1),new Tuple2<String, Integer>("hello", 1),new Tuple2<String, Integer>("you", 1));// 并行化集合,创建初始化RDDJavaPairRDD<String, Integer> words1RDD = javaSparkContext.parallelizePairs(words1);JavaPairRDD<String, Integer> words2RDD = javaSparkContext.parallelizePairs(words2);// 使用cogroup算子关联两个RDD// 相当于是,一个key join上的所有value,都给放到一个Iterable里面去了// cogroup,不太好讲解,希望通过动手编写我们的案例,仔细体会其中的奥妙JavaPairRDD<String, Tuple2<Iterable<Integer>, Iterable<Integer>>> studentScore = words1RDD.cogroup(words2RDD);studentScore.foreach(new VoidFunction<Tuple2<String, Tuple2<Iterable<Integer>, Iterable<Integer>>>>() {@Overridepublic void call(Tuple2<String, Tuple2<Iterable<Integer>, Iterable<Integer>>> t) throws Exception {System.out.println(t._1);System.out.println(t._2._1);System.out.println(t._2._2);System.out.println("===============================");}});// 关闭javaSparkContextjavaSparkContext.close();}

看图

cogroup.png

cogroup算子

  1. 基础的算子
  2. 在我们大量的实践中,很少遇到说要用cogroup算子的情况
  3. cogroup算子是其他很多算子的基础,比如join

可以把上面那段代码跑一下,其实就是将两个个rdd的key对应的value值分别封装到一个Iterator中去

155、Spark内核原理进阶之cogroup算子内部实现原理相关推荐

  1. Spark内核解析1

    Spark通讯架构 脚本探究: 概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制.Spark 任务调度机制.Spark 内存管理机制.Spark 核心功能的 ...

  2. Spark内核解析之一:内核概述

    Spark 内核概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制.Spark任务调度机制.Spark 内存管理机制.Spark 核心功能的运行原理等,熟练掌 ...

  3. PySpark | RDD持久化 | 共享变量 | Spark内核调度

    文章目录 一.RDD持久化 1.RDD的数据是过程数据 2.RDD缓存 2.1 RDD缓存的特点 2.2 cache()与unpersist()实战 3.RDD CheckPoint 3.1 Chec ...

  4. 05_大数据技术之Spark内核解析(1.1)

    1. Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spa ...

  5. 一、Spark内核之运行机制

    Spark内核系列目录 一.Spark内核的运行机制 二.Spark内核的通讯架构 文章目录 Spark内核系列目录 前言 一.Spark核心组件 1.Driver 2. Executor 3. Sp ...

  6. Spark内核(上)——附:两种Yarn模式源码解析

    文章目录 一.Spark内核概述 1.1 Spark核心组件回顾 1.1.1 Driver 1.1.2 Executor 1.2 Spark通用运行流程概述 二.Spark通信架构概述 2.1 Spa ...

  7. 大数据计算平台Spark内核全面解读

    1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着Spark在大数据计算领域的暂露头角,越来越多的 ...

  8. Spark内核设计的艺术:架构设计与实现——前言

    前言 为什么写这本书 给这本书写前言,让我想起了两年前给<深入理解Spark:核心思想与源码分析>一书写前言的经历.这让我不禁想起崔护的<题都城南庄>,诗的内容是: 去年今日此 ...

  9. LESSON 12.8 原理进阶 (1):GBDT数学流程与残差概念辨析

    四 原理进阶:GBDT的求解流程 1 GBDT的基本数学流程 作为当代众多经典算法的基础,GBDT的求解过程可谓十分精妙,它不仅开创性地舍弃了使用原始标签进行训练的方式,同时还极大地简化了Boosti ...

最新文章

  1. 通过委派模式包装一个RxJavaCallAdapterFactory
  2. Adobe Flash player 10 提示:Error#2044:未处理的IOErrorEvent. text=Error#2036:加载未完成 的解决方法
  3. 将ArrayList保存到SharedPreferences
  4. K8S部署工具:KubeOperator主要概念
  5. Java----代码优化篇
  6. CentOS 7 防火墙命令
  7. julia在mac环境变量_在Julia中找到值/变量的类型
  8. MTK 驱动(76)---如何用adb控制MTKLogger
  9. python server酱_用Python抢到回家的车票,so easy
  10. SimpleDateFormat 格式化日期
  11. 数据结构与算法分析(排序,递归,链表)
  12. Win10计算机默认排序,win10系统文件夹自动排列怎么取消?win10文件夹不自动排列设置方法...
  13. CSS实现自定义虚线
  14. 计算机硬盘用u盘维修,电脑维修:U盘和移动硬盘及固态硬盘的区别
  15. 恒玄BES调试笔记-BES2500啸叫howling
  16. 微信nickname乱码 php,php版微信公众平台回复中文出现乱码问题的解决方法
  17. 系统常见电脑蓝屏原因以及解决方法
  18. php access 会员管理,Member access operators(会员接入运营商)
  19. SpringCloud Gateway API接口安全设计(加密 、签名)
  20. 大数据技术之Hive------操作记录笔记

热门文章

  1. 开发好APP了如何上架apple store市场?
  2. socket端口复用
  3. NONMEN 协变量模型
  4. 想要做自媒体赚钱真的很难吗?
  5. 个人免签即时到账收款接口 bufpay.com 支持多账号收款
  6. 安装goaccess出现错误
  7. 支持swift3.0的开源库
  8. ATTASM汇编参考
  9. 服务器网站缓存怎么清理,清理网站缓存的实用方法
  10. Hash函数与生日攻击