java

 /**
*cogroup与join算子不同的是如果rdd中的一个key,对应多个value,则返回<Iterable<key>,Iterable<value>>
*@author Tele
*/
public class CogroupDemo {
private static SparkConf conf = new SparkConf().setMaster("local").setAppName("congroupdemo");
private static JavaSparkContext jsc = new JavaSparkContext(conf);
public static void main(String[] args) {
//每个学生有多门成绩
List<Tuple2<Integer,String>> studentList = Arrays.asList(
new Tuple2<Integer,String>(1,"tele"),
new Tuple2<Integer,String>(1,"xx"),
new Tuple2<Integer,String>(2,"yeye"),
new Tuple2<Integer,String>(3,"wyc")
); List<Tuple2<Integer,Integer>> scoreList = Arrays.asList(
new Tuple2<Integer,Integer>(1,100),
new Tuple2<Integer,Integer>(1,110),
new Tuple2<Integer,Integer>(1,120),
new Tuple2<Integer,Integer>(2,90),
new Tuple2<Integer,Integer>(2,60),
new Tuple2<Integer,Integer>(2,50),
new Tuple2<Integer,Integer>(3,70),
new Tuple2<Integer,Integer>(3,70)
); JavaPairRDD<Integer, String> studentRDD = jsc.parallelizePairs(studentList);
JavaPairRDD<Integer, Integer> scoreRDD = jsc.parallelizePairs(scoreList); JavaPairRDD<Integer, Tuple2<Iterable<String>, Iterable<Integer>>> result = studentRDD.cogroup(scoreRDD);
result.foreach(new VoidFunction<Tuple2<Integer,Tuple2<Iterable<String>,Iterable<Integer>>>>() { private static final long serialVersionUID = 1L; @Override
public void call(Tuple2<Integer, Tuple2<Iterable<String>, Iterable<Integer>>> t) throws Exception {
System.out.println("学号:" + t._1);
System.out.println("姓名:" + t._2._1);
System.out.println("成绩:" + t._2._2); /* System.out.print("成绩:[");
t._2._2.forEach(i->System.out.print(i + ","));
System.out.println("]");
System.out.println("====================");*/ }
}); jsc.close();
}
}

scala

 object CogroupDemo {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local").setAppName("cogroupdemo");
val sc = new SparkContext(conf); val studentArr = Array((1,"tele"),(2,"yeye"),(3,"wyc"));
val scoreArr = Array((1,100),(1,200),(2,80),(2,300),(3,100)); val studentRDD = sc.parallelize(studentArr,1);
val scoreRDD = sc.parallelize(scoreArr,1); val result = studentRDD.cogroup(scoreRDD);
result.foreach(t=>{
println("学号:" + t._1);
println("姓名:" + t._2._1.mkString(" "));
println("成绩:" + t._2._2.mkString(","));
println("============");
})
}
}

spark cogroup算子的更多相关文章

  1. Spark RDD概念学习系列之Spark的算子的分类(十一)

    Spark的算子的分类 从大方向来说,Spark 算子大致可以分为以下两类: 1)Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理. Transformat ...

  2. Spark常用算子-KeyValue数据类型的算子

    package com.test; import java.util.ArrayList; import java.util.List; import java.util.Map; import or ...

  3. Spark操作算子本质-RDD的容错

    Spark操作算子本质-RDD的容错spark模式1.standalone master 资源调度 worker2.yarn resourcemanager 资源调度 nodemanager在一个集群 ...

  4. Spark RDD概念学习系列之Spark的算子的作用(十四)

    Spark的算子的作用 首先,关于spark算子的分类,详细见 http://www.cnblogs.com/zlslch/p/5723857.html 1.Transformation 变换/转换算 ...

  5. java实现spark常用算子之cogroup

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spa ...

  6. 列举spark所有算子

    一.RDD概述      1.什么是RDD           RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可 ...

  7. spark常用算子总结

    算子分为value-transform, key-value-transform, action三种.f是输入给算子的函数,比如lambda x: x**2 常用算子: keys: 取pair rdd ...

  8. Spark RDD 算子总结

    Spark算子总结 算子分类 Transformation(转换) 转换算子 含义 map(func) 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 filter(func) ...

  9. Spark 初级算子

    #常用Transformation(即转换,延迟加载) #通过并行化scala集合创建RDD val rdd1 = sc.parallelize(Array(1,2,3,4,5,6,7,8)) #查看 ...

随机推荐

  1. iOS开发- iOS7显示偏差(UITableView下移)解决的方法

    之前碰到过一个问题. 就是利用storyboard拖动出来的控件, 在iOS7上跑老是莫名的下移. 比方这样(红色区域为多余的) 解决的方法: iOS7在Conttoller中新增了这个属性: aut ...

  2. thinkphp5最最最最简单的ajax实例

    thinkphp5最最最最简单的ajax实例 一.总结 一句话总结:页面端使用$.get()方法传递ajax请求,服务器端判断是不是ajax请求,是的话接受参数,进行逻辑处理之后向客户端返回值. 1. ...

  3. Maven 异常:Project configuration is not up-to-date with pom.xml解决方案

    一.异常信息: 导入maven工程后,出现如下错误: Description    Resource    Path    Location    TypeProject configuration ...

  4. vue指令概览

    原文 简书原文:https://www.jianshu.com/p/5fd47b7422fd 大纲 1.什么是vue指令 2.向指令中传入参数 3.指令中带入修饰符 4.指令的缩写 5.常见的vue指 ...

  5. iproute2交叉编译

    测试zynq+ramdisk平台时发现自带的busybox无法通过ip命令配置can接口,执行can配置命令 ip link set can0 type can bitrate 会出现以下报错: ip ...

  6. POJ 1511 Invitation Cards (ZOJ 2008) 使用优先队列的dijkstra

    传送门: http://poj.org/problem?id=1511 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1008 ...

  7. [Angular] Using useExisting provider

    Unlike 'useClass', 'useExisting' doesn't create a new instance when you register your service inside ...

  8. 使用DatagramSocket与DatagramPacket传输数据 分类: B1_JAVA 2013-10-12 13:00 1936人阅读 评论(0) 收藏

    参考传智播客毕向东JAVA视频. 注: DatagramSocket发送的每个包都需要指定地址,而Socket则是在首次创建时指定地址,以后所有数据的发送都通过此socket. A socket is ...

  9. AOP 专题

    Spring框架有两个核心思想:IOC和AOP Spring IOC指的是控制翻转,使用普通JAVA Bean,在运行时由Spring容器统一管理和串联,服务于不同的流程,在开发过程中对Spring ...

  10. ITFriend创业阶段的服务器环境搭建手册

    创业阶段,进一步实践了Linux环境搭建和维护,下面是一些常用软件的搭建步骤和参考资料,仅供自己和诸位参考. 我个人还是比较倾向"一站式Web开发"的,自己想做点事,需要太多的技能 ...