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. android--显式跳转和隐式跳转的差别使用方法

    #创建第二个activity * 新创建的activity.必须在清单文件里做配置,否则系统找不到,在显示时会直接报错 <activity android:name="com.ithe ...

  2. 关于http请求指定本地ip

    static void Main(string[] args) { //ssl证书验证问题(没有校验) ServicePointManager.ServerCertificateValidationC ...

  3. Java核心技术 卷Ⅰ 基础知识(3)

    第五章 继承 继承已存在的类就是复用这些类的方法和域.反射是指在程序运行期间发现更多的类及其属性的能力. . 反射 . 使用反射编写泛型数组代码 继承设计的技巧

  4. angular 创建服务

    一:新建服务模块和服务文件 ng g module services --spec=false ng g service services/quote --spec=false 二:在quote.se ...

  5. java中Arrays类的应用

    java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.具有以下功能: ² 给数组赋值:通过fill方法. ² 对数组排序:通过sort方法,按升序. ² 比较数组:通过equ ...

  6. [D3] Basic Interactivity with D3 v4

    Data visualizations are a lot more interesting when they’re interactive. Whether it’s clicks, roll o ...

  7. 从零开始使用git第一篇:下载安装配置

    从零开始使用git 第一篇:下载安装配置 第一篇:从零开始使用git第一篇:下载安装配置 第二篇:从零开始使用git第二篇:git实践操作 第三篇:从零开始使用git第三篇:git撤销操作.分支操作和 ...

  8. 关于IO重定向

    首先,Unix进程使用文件描述符0,1,2作为标准输入.输出和错误的通道. 其次,当进程请求一个新的文件描述符的时候,系统内核将最低可用的文件描述符赋给它. 第三,文件描述符集合通过exec调用传递, ...

  9. 对照jQuery和AngularJS的不同思维模

    对照jQuery和AngularJS的不同思维模 Question 如果我已经熟悉了怎样使用jQuery来开发client应用.我如今打算使用AngularJS.请描写叙述一下有那些思维模式方面的东西 ...

  10. js自动记忆用户名(可以设置cookie多存几天)

    js自动记忆用户名(可以设置cookie多存几天) 一.总结 1.记住密码:因为cookie是存在本地的,也可以多存几天,所以记住密码的操作只需要读取cookie,将其中的账号密码直接显示在输入框就好 ...