Spark DataFrame中的join使用

Spark DataFrame中join与SQL很像,都有inner join, left join, right join, full join; 
那么join方法如何实现不同的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   name     b表     id     job   parent_id   
              1   张3                   1     23     1   
              2   李四                  2     34     2   
              3   王武                  3     34     4   

  1. 内连接
 
vvDf.join(vvtDf, Seq("city", "state"), "inner").show
vvDf.join(vvtDf, 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   张3                   1     23     1   

  2   李四                  2     34     2   

2.左外连接

vvDf.join(vvtDf, Seq("city", "state"), "left").show
 结果是     
  1   张3                    1     23     1   
  2   李四                  2     34     2   
  3   王武                  null   

其他连接同理

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值