SparkCore算子(实例)之----实现表格连接(cartesian, cogroup, flatMap)

本文详细介绍了SparkCore中的连接操作,包括笛卡尔积(cartesian)和cogroup算子的使用。通过实例展示了如何利用cogroup实现自然连接,并分别演示了打印连接结果和返回RDD数据集两种方式。文章还探讨了flatMap在连接操作中的作用,解释了它如何扩展元素数量以实现连接效果。
摘要由CSDN通过智能技术生成

笛卡尔积 cartesian

笛卡尔积就是实现两个表格(数据集)的直接生硬拼接,具体过程为:对于左表的每一行数据,去拼接右表的每一行数据,将结果直接拼接。

由于笛卡尔积的连接结果与连接顺序无关,即:没有驱动表和从动表的区别,所以采用“左表”、“右表”这样的称呼,“左表”、“右表”只会影响最终的结果集中每一行记录的左右顺序,不影响整个结果的最终意义。

首先创建两个RDD数据集:

 val rdd12 = sc.parallelize(Array(("a",1), ("b",2),("c",3), ("d",4)))
 val rdd13 = sc.parallelize(Array(("a","huangbo"), ("b","xuzheng"),("c","liutao"), ("e",5)))

然后对两个RDD求笛卡尔积:

 /**
    * cartesian(otherRDD)笛卡尔积:thisRDD与otherRDD做笛卡尔积!
    *         ---- thisRDD与otherRDD可以是任意形式的RDD
    * 笛卡尔积:两张表格的生硬拼接,左表的每一行记录去连接右表的每一条记录;
    */
//RDD[((String, Int), (String, Any))]
rdd12.cartesian(rdd13).foreach(println)

运行结果如下:

	((a,1),(a,huangbo))
	((a,1),(b,xuzheng))
	((a,1),(c,liutao))
	((a,1),(e,5))
	((b,2),(a,huangbo))
	((b,2),(b,xuzheng))
	((b,2),(c,liutao))
	((b,2),(e,5))
	((c,3),(a,huangbo))
	((c,3),(b,xuzheng))
	((c,3),(c,liutao))
	((c,3),(e,5))
	((d,4),(a,huangbo))
	((d,4),(b,xuzheng))
	((d,4),(c,liutao))
	((
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值