1. import org.apache.spark.SparkConf;
    import org.apache.spark.api.java.JavaPairRDD;
    import org.apache.spark.api.java.JavaSparkContext;
    import org.apache.spark.api.java.function.VoidFunction;
    import scala.Tuple2;
    import java.util.Arrays;
    import java.util.List;
  2.  
  3. /**
    * cogroup(otherDataSet,[numTasks]) 算子:
    * 将两个RDD中的数据按照key进行汇总:
    * 第一个RDD按照key进行汇总,结果放在iterable中。
    * 第二个RDD同样按照key进行汇总,结果放在另一个iterable中。
    * 最后得到一个key和两个iterable的数据。
    */
    public class CogroupOperator {
    public static void main(String[] args) {
    SparkConf conf = new SparkConf().setMaster("local").setAppName("cogroup");
    JavaSparkContext sc = new JavaSparkContext(conf);
    List<Tuple2<String,String>> stus = Arrays.asList(
    new Tuple2<>("w1","z1"),
    new Tuple2<>("w2","z2"),
    new Tuple2<>("w3","z3"),
    new Tuple2<>("w2","z2"),
    new Tuple2<>("w1","z1")
    );
    List<Tuple2<String,String>> scores = Arrays.asList(
    new Tuple2<>("w1","100"),
    new Tuple2<>("w2","10"),
    new Tuple2<>("w3","1"),
    new Tuple2<>("w2","90"),
    new Tuple2<>("w1","900")
    );
    JavaPairRDD<String,String> stusrdd = sc.parallelizePairs(stus);
    JavaPairRDD<String,String> scorerdd = sc.parallelizePairs(scores);
  4.  
  5. JavaPairRDD<String,Tuple2<Iterable<String>,Iterable<String>>> result = stusrdd.cogroup(scorerdd,2);
  6.  
  7. result.foreach(new VoidFunction<Tuple2<String, Tuple2<Iterable<String>, Iterable<String>>>>() {
    @Override
    public void call(Tuple2<String, Tuple2<Iterable<String>, Iterable<String>>> tuple) throws Exception {
    System.err.println("key:"+tuple._1+",另外两个iterable中的数据:"+tuple._2);
    }
    });
    }
    }

微信扫描下图二维码加入博主知识星球,获取更多大数据、人工智能、算法等免费学习资料哦!

java实现spark常用算子之cogroup的更多相关文章

  1. java实现spark常用算子之Union

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  2. java实现spark常用算子之TakeSample

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  3. java实现spark常用算子之SaveAsTextFile

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  4. java实现spark常用算子之Repartitions

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

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

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  6. java实现spark常用算子之map

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  7. java实现spark常用算子之intersection

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  8. java实现spark常用算子之frist

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  9. java实现spark常用算子之flatmap

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

随机推荐

  1. 前后端分离,get请求导出

    [HttpGet] public HttpResponseMessage Export(string obj) { string eventType = string.Empty; string ex ...

  2. 【转】jQuery - 同时添加click和dblclick事件

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  3. 【转】diamond专题(四)—— 容灾机制

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  4. python3笔记二:进制转换与原码反码补码

    一:学习内容 进制:二进制.八进制.十进制.十六进制 进制转换 原码.反码.补码 二:进制 二进制 1.二进制:只有0和1,逢2进1 2.举例:0+0=0.0+1=1.1+1=10 3.过程剖析:二进 ...

  5. C# 下载文件的心得

    下载文件最常用的有两种: 第一种:直接使用A标签,对应着文件的地址. 第二种:将文件写成流,然后在回传给客户端. 第一种,使用起来方便,但是有个坏处,如果你的文件是可编辑的文件(比如Excel wor ...

  6. char类型可不可以存储一个汉字

    java采用unicode,2个字节(16位)来表示一个字符, 无论是汉字还是数字字母,或其他语言.char 在java中是2个字节.所以可以存储中文 Java八种基本数据类型1)四种整数类型(byt ...

  7. 如何消除 com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

    在application.properties中添加以下两句话: eureka.client.register-with-eureka=falseeureka.client.fetch-registr ...

  8. 使用hash拆分文件

    package readImgUrl; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.i ...

  9. pip安装selenium时,报错“You are using pip version 10.0.1, however version 18.0 is available.”的问题

    pip安装selenium,pip install selenium 类型这样错误 1  原因可能不是以管理员身份运行cmd安装selenium 2  解决方式 也是要管理员身份运行 重点在最后一句 ...

  10. java之消息队列ActiveMQ实践

    原创论文:https://www.cnblogs.com/goujh/p/8510239.html 消息队列的应用场景: 消息队列应用场景 异步处理,应用解耦,流量削锋和消息通讯四个场景 异步处理: ...