Spark DataFrame中的join使用說明


spark sql 中join的類型

Spark DataFrame中join與SQL很像,都有inner join, left join, right join, full join;

類型 說明
inner join 內連接
left join 左連接
right join 右連接
full join 全連接

 spark join 看其原型

def join(right : DataFrame, usingColumns : Seq[String], joinType : String) : DataFrame 
def join(right : DataFrame, joinExprs : Column, joinType : String) : DataFrame 

joinType可以是”inner”、“left”、“right”、“full”分別對應inner join, left join, right join, full join,默認值是”inner”,代表內連接

例子:  

 a表

id job
1 張3
2 李四
3 王武

b表   

id job parent_id
1 23 1
2 34 2
3 34 4

內連接

內連接:內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。

df.join(df, Seq("city", "state"), "inner").show
df.join(df, Seq("city", "state")).show

 Seq是指連接的字段,這個相當於

 SELECT   a.au_fname,   a.au_lname,   p.pub_name   
   FROM   authors   AS   a   INNER   JOIN   publishers   AS   p   
        ON   a.city   =   p.city   
        AND   a.state   =   p.state   
  ORDER   BY   a.au_lname   ASC,   a.au_fname   ASC   

結果是     

  1   張三               1     23     1   
  2   李四                  2     34     2 


內連接指定列名

df.join(df, $"city"===$"city", "inner").show
df.join(df, $"city"===$"city").show

左外連接

左聯接:是以左表為基准,將a.stuid = b.stuid的數據進行連接,然后將左表沒有的對應項顯示,右表的列為NULL

df.join(df, Seq("city", "state"), "left").show

 結果是

  1   張三                  1     23     1   
  2   李四                  2     34     2   
  3   王武                  null  null null 

 

 

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM