spark2.x由浅入深深到底系列六之RDD java api详解四

发布时间:2020-06-25 19:51:02 作者:tangweiqun
来源:网络 阅读:668

学习spark任何的知识点之前,先对spark要有一个正确的理解,可以参考:正确理解spark

本文对join相关的api做了一个解释

SparkConf conf = new SparkConf().setAppName("appName").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);

JavaPairRDD<Integer, Integer> javaPairRDD =
        sc.parallelizePairs(Arrays.asList(new Tuple2<>(1, 2),
                new Tuple2<>(3, 4), new Tuple2<>(3, 6), new Tuple2<>(5, 6)));
JavaPairRDD<Integer, Integer> otherJavaPairRDD =
        sc.parallelizePairs(Arrays.asList(new Tuple2<>(3, 9),
                new Tuple2<>(4, 5)));
//结果: [(4,([],[5])), (1,([2],[])), (3,([4, 6],[9])), (5,([6],[]))]
System.out.println(javaPairRDD.cogroup(otherJavaPairRDD).collect());

//结果: [(4,([],[5])), (1,([2],[])), (3,([4, 6],[9])), (5,([6],[]))]
// groupWith和cogroup效果是一模一样的
System.out.println(javaPairRDD.groupWith(otherJavaPairRDD).collect());

//结果: [(3,(4,9)), (3,(6,9))]
//基于cogroup实现的,就是取cogroup结果中相同key在两个RDD都有value的数据
System.out.println(javaPairRDD.join(otherJavaPairRDD).collect());

//结果: [(1,(2,Optional.empty)), (3,(4,Optional[9])), (3,(6,Optional[9])), (5,(6,Optional.empty))]
//基于cogroup实现的,结果需要出现的key以左边的RDD为准
System.out.println(javaPairRDD.leftOuterJoin(otherJavaPairRDD).collect());

//结果: [(4,(Optional.empty,5)), (3,(Optional[4],9)), (3,(Optional[6],9))]
//基于cogroup实现的,结果需要出现的key以右边的RDD为准
System.out.println(javaPairRDD.rightOuterJoin(otherJavaPairRDD).collect());

//结果: [(4,(Optional.empty,Optional[5])), (1,(Optional[2],Optional.empty)), (3,(Optional[4],Optional[9])), (3,(Optional[6],Optional[9])), (5,(Optional[6],Optional.empty))]
//基于cogroup实现的,结果需要出现的key是两个RDD中所有的key
System.out.println(javaPairRDD.fullOuterJoin(otherJavaPairRDD).collect());


从上可以看出,最基本的操作是cogroup这个操作,下面是cougroup的原理图:

spark2.x由浅入深深到底系列六之RDD java api详解四

如果想对cogroup原理更彻底的理解,可以参考:spark core RDD api原理详解

推荐阅读:
  1. 大数据学习系列之六 ----- Hadoop+Spark环境搭建
  2. spark2.x由浅入深深到底系列七之py4j在spark中python api的使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spark 大数据 javaapi

上一篇:如何进行基于SAIL-AM335的vsftpd移植?

下一篇:php处理高并发问题的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》