亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spark SQL 測試JoinType中所有join的類型,便于理解

發布時間:2020-08-20 14:56:17 來源:網絡 閱讀:1488 作者:Stitch_x 欄目:大數據

準備 測試數據

trade
訂單號 賣家 買家 買家城市

1   A   小王  北京
2   B   小李  天津
3   A   小劉  北京

order
所屬訂單號 買家 商品名稱 價格 發貨時間

1   小王  電視  12  2015-08-01 09:08:31
1   小王  冰箱  24  2015-08-01 09:08:14
2   小李  空調  12  2015-09-02 09:01:31

注:皆以\t分割

創建DF

 def main(args: Array[String]): Unit = {
val spark=SparkSession.builder()
      .appName("JoinDemo")
      .master("local[2]")
      .getOrCreate()
 import spark.implicits._
 val order=spark.sparkContext.textFile("order.data").map(_.split("\t")).map(x=>Order(x(0),x(1),x(2),x(3),x(4))).toDF()
 val trade=spark.sparkContext.textFile("trade.data").map(_.split("\t")).map(x=>Trade(x(0),x(1),x(2),x(3))).toDF()
    order.show()
//    +----+-----+------+-----+----------+
//    |o_id|buyer|p_name|price|      date|
//    +----+-----+------+-----+----------+
//    |   1| 小王|  電視|   12|2015-08-01|
//      |   1| 小王|  冰箱|   24|2015-08-01|
//      |   2| 小李|  空調|   12|2015-09-02|
//      +----+-----+------+-----+----------+

    trade.show()
//    +----+------+-----+----------+
//    |o_id|seller|buyer|buyer_city|
//    +----+------+-----+----------+
//    |   1|     A| 小王|      北京|
//      |   2|     B| 小李|      天津|
//      |   3|     A| 小劉|      北京|
//      +----+------+-----+----------+

}
  case class Student(id:String,name:String,phoneNum:String,email:String)
  case class Order(o_id:String,buyer:String,p_name:String,price:String,date:String)
  case class Trade(o_id:String,seller:String,buyer:String,buyer_city:String)

JoinType類型

默認是 `inner`. 必須是以下類型的一種:`inner`, `cross`, `outer`, `full`, `full_outer`, `left`, `left_outer`,`right`, `right_outer`, `left_semi`, `left_anti`.

1、不指定和 inner

不指定

 trade.join(order,trade("o_id")===order("o_id")).show
+----+------+-----+----------+----+-----+------+-----+----------+
|o_id|seller|buyer|buyer_city|o_id|buyer|p_name|price|      date|
+----+------+-----+----------+----+-----+------+-----+----------+
|   1|     A| 小王|      北京|   1| 小王|  電視|   12|2015-08-01|
|   1|     A| 小王|      北京|   1| 小王|  冰箱|   24|2015-08-01|
|   2|     B| 小李|      天津|   2| 小李|  空調|   12|2015-09-02|
+----+------+-----+----------+----+-----+------+-----+----------+

指定inner

scala> trade.join(order,trade("o_id")===order("o_id"),"inner").show
+----+------+-----+----------+----+-----+------+-----+----------+               
|o_id|seller|buyer|buyer_city|o_id|buyer|p_name|price|      date|
+----+------+-----+----------+----+-----+------+-----+----------+
|   1|     A| 小王|      北京|   1| 小王|  電視|   12|2015-08-01|
|   1|     A| 小王|      北京|   1| 小王|  冰箱|   24|2015-08-01|
|   2|     B| 小李|      天津|   2| 小李|  空調|   12|2015-09-02|
+----+------+-----+----------+----+-----+------+-----+----------+

不指定和inner都是一樣,都是求兩Datarame的交集。

2、left 和 left outer

scala> trade.join(order,trade("o_id")===order("o_id"),"left").show
+----+------+-----+----------+----+-----+------+-----+----------+               
|o_id|seller|buyer|buyer_city|o_id|buyer|p_name|price|      date|
+----+------+-----+----------+----+-----+------+-----+----------+
|   3|     A| 小劉|      北京|null| null|  null| null|      null|
|   1|     A| 小王|      北京|   1| 小王|  電視|   12|2015-08-01|
|   1|     A| 小王|      北京|   1| 小王|  冰箱|   24|2015-08-01|
|   2|     B| 小李|      天津|   2| 小李|  空調|   12|2015-09-02|
+----+------+-----+----------+----+-----+------+-----+----------+

scala> trade.join(order,trade("o_id")===order("o_id"),"left_outer").show
+----+------+-----+----------+----+-----+------+-----+----------+               
|o_id|seller|buyer|buyer_city|o_id|buyer|p_name|price|      date|
+----+------+-----+----------+----+-----+------+-----+----------+
|   3|     A| 小劉|      北京|null| null|  null| null|      null|
|   1|     A| 小王|      北京|   1| 小王|  電視|   12|2015-08-01|
|   1|     A| 小王|      北京|   1| 小王|  冰箱|   24|2015-08-01|
|   2|     B| 小李|      天津|   2| 小李|  空調|   12|2015-09-02|
+----+------+-----+----------+----+-----+------+-----+----------+

left join和left outer join完全等價

right 和 right outer

scala> trade.join(order,trade("o_id")===order("o_id"),"right_outer").show
+----+------+-----+----------+----+-----+------+-----+----------+               
|o_id|seller|buyer|buyer_city|o_id|buyer|p_name|price|      date|
+----+------+-----+----------+----+-----+------+-----+----------+
|   1|     A| 小王|      北京|   1| 小王|  電視|   12|2015-08-01|
|   1|     A| 小王|      北京|   1| 小王|  冰箱|   24|2015-08-01|
|   2|     B| 小李|      天津|   2| 小李|  空調|   12|2015-09-02|
+----+------+-----+----------+----+-----+------+-----+----------+

scala> trade.join(order,trade("o_id")===order("o_id"),"right").show
+----+------+-----+----------+----+-----+------+-----+----------+
|o_id|seller|buyer|buyer_city|o_id|buyer|p_name|price|      date|
+----+------+-----+----------+----+-----+------+-----+----------+
|   1|     A| 小王|      北京|   1| 小王|  電視|   12|2015-08-01|
|   1|     A| 小王|      北京|   1| 小王|  冰箱|   24|2015-08-01|
|   2|     B| 小李|      天津|   2| 小李|  空調|   12|2015-09-02|
+----+------+-----+----------+----+-----+------+-----+----------+

right 和 right outer等價

full_outer

scala> trade.join(order,trade("o_id")===order("o_id"),"full_outer").show
+----+------+-----+----------+----+-----+------+-----+----------+               
|o_id|seller|buyer|buyer_city|o_id|buyer|p_name|price|      date|
+----+------+-----+----------+----+-----+------+-----+----------+
|   3|     A| 小劉|      北京|null| null|  null| null|      null|
|   1|     A| 小王|      北京|   1| 小王|  電視|   12|2015-08-01|
|   1|     A| 小王|      北京|   1| 小王|  冰箱|   24|2015-08-01|
|   2|     B| 小李|      天津|   2| 小李|  空調|   12|2015-09-02|
+----+------+-----+----------+----+-----+------+-----+----------+

得出兩Datarame交集

left_semi

scala> trade.join(order,trade("o_id")===order("o_id"),"left_semi").show
+----+------+-----+----------+
|o_id|seller|buyer|buyer_city|
+----+------+-----+----------+
|   1|     A| 小王|      北京|
|   2|     B| 小李|      天津|
+----+------+-----+----------+

過濾出兩DF共有的部分

left_anti

cala> trade.join(order,trade("o_id")===order("o_id"),"left_anti").show
+----+------+-----+----------+
|o_id|seller|buyer|buyer_city|
+----+------+-----+----------+
|   3|     A| 小劉|      北京|
+----+------+-----+----------+

過濾出DF2中DF1沒有的部分

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滕州市| 林芝县| 睢宁县| 苍梧县| 永福县| 南丰县| 波密县| 汕尾市| 鄂托克旗| 措勤县| 宁乡县| 东至县| 页游| 浮山县| 柘荣县| 汶上县| 江安县| 丰原市| 马公市| 阿拉尔市| 航空| 华蓥市| 鹤壁市| 桐庐县| 乌审旗| 黔南| 广河县| 平利县| 茂名市| 砀山县| 灌云县| 弥渡县| 抚州市| 西乡县| 偃师市| 扎囊县| 宝山区| 茌平县| 平塘县| 溧水县| 长乐市|