1.join在Spark中的应用
(1)join至少需要2个数据集。
结果分析,A、C这些就相当于join的条件,这是inner join只返回左右都匹配上的。
(2)leftOuterjoin
结果分析:left左边有的都需要列出来,但右边不一定有,没有的就是None。
Array[(String, (String, Option[String]))] = Array((F,(f1,None)), (F,(f1,None)), (D,(d1,None)), (A,(a1,Some(a2))), (C,(c1,Some(c2))), (C,(c1,Some(c3))))
(3)rightjoin
结果分析:rightjoin,右边的全都输出,左边有的some()输出,没有的就None。
Array[(String, (Option[String], String))] = Array((A,(Some(a1),a2)), (C,(Some(c1),c2)), (C,(Some(c1),c3)), (E,(None,e1)))
(4)fullouterJoin
结果分析:注意看数据结构,俩个option因为你不知道那个有,那个没有,在工作一定得预先知道join的结果,有哪些列,需要那些字段。
Array[(String, (Option[String], Option[String]))] = Array((F,(Some(f1),None)), (F,(Some(f1),None)), (D,(Some(d1),None)), (A,(Some(a1),Some(a2))), (C,(Some(c1),Some(c2))), (C,(Some(c1),Some(c3))), (E,(None,Some(e1))))
2.substract
Return an RDD with the elements from `this` that are not in `other`.
就是一个减法,常用在俩个DF想减之上。
3.intersection
返回俩个都有的交集
4.cartesian
就是俩个做笛卡儿积,(a,b)这样都去组成。
spark-shell只是用于做一些简单的测试,IDEA才是用来做开发的。