package com.zyc.spark
import org.apache.spark.rdd.RDD
import org.apache.spark.{HashPartitioner, SparkConf, SparkContext}
/**
* Created with IntelliJ IDEA.
* Author: zyc2913@163.com
* Date: 2020/9/28 11:51
* Version: 1.0
* Description: 与连接相关的几种算子
*/
object StudyJoin {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local[2]").setAppName("demo5")
val sc = new SparkContext(conf)
/**
* 18. join 内连接
* 18.1.声明 def join[W](other: RDD[(K, W)]): RDD[(K, (V, W))] =
* 18.2.参数 另外一个RDD K和原RDD类型相同 v和原RDD类型可以不同
* 18.3.返回值 RDD[(K, (V, W))]
* 二元组,二元组的K是原RDD的K类型,二元组的V是一个二元组,Key是原RDD的V类型,value是参数RDD的V类型
* 18.4.作用 将两个K-V的RDD按照Key进行内连接
*/
val rdd:RDD[(Int,String)] = sc.makeRDD(Array(1 -> "jordan", 2 -> "james", 3 -> "ray")) //(id,name)
val rdd1:RDD[(Int,Int)] = sc.makeRDD(Array(1 -> 8000, 3 -> 5000)) //(id,salary)
val rdd2:RDD[(Int,(String,Int))] = rdd.join(rdd1)
//rdd2.foreach(println) //控制台打印:(1,(jordan,8000)) (3,(ray,5000))
/**
* 19. leftOuterJoin 左外连接,以左表为准,左表全部列出,右表中为空时填None
* 19.1.声明 def leftOuterJoin[W](other: R