join连接

    科技2025-12-17  13

    单个字段链接:

    df.join(df2,"user").show() 输出为: +----+---+----+--------------------+---+ |user| id|type| visittime|sex| +----+---+----+--------------------+---+ | 1| 1| 助手1|2017-08-10 13:44:...| 男| | 1| 2|APP1|2017-08-04 13:44:...| 男| | 1| 11|APP1|2017-07-15 13:45:...| 男| | 1| 12| 助手2|2017-07-07 13:45:...| 男| | 2| 3| 助手1|2017-08-05 13:44:...| 女| | 2| 4| 助手1|2017-08-07 13:44:...| 女| | 2| 9|APP2|2017-08-11 13:44:...| 女| | 2| 10| 助手1|2017-07-14 13:44:...| 女| +----+---+----+--------------------+---+

    多个字段链接:

    using形式:df.join(df2,Seq("id","user")) //因为类似于a join b using column1的形式 column类型:df.join(df2,df("user")===df2("user")) 使用外连接:df.join(df2,df("user")===df2("user"),"outer").show() 输出: +----+----+----+--------------------+----+----+ | id|user|type| visittime|user| sex| +----+----+----+--------------------+----+----+ | 1| 1| 助手1|2017-08-10 13:44:...| 1| 男| | 2| 1|APP1|2017-08-04 13:44:...| 1| 男| | 11| 1|APP1|2017-07-15 13:45:...| 1| 男| | 12| 1| 助手2|2017-07-07 13:45:...| 1| 男| | 5| 3|APP1|2017-08-02 13:44:...|null|null| | 6| 3|APP1|2017-08-01 13:44:...|null|null| | 7| 3| 助手2|2017-08-14 13:44:...|null|null| | 8| 3|APP2|2017-08-03 13:44:...|null|null| | 3| 2| 助手1|2017-08-05 13:44:...| 2| 女| | 4| 2| 助手1|2017-08-07 13:44:...| 2| 女| | 9| 2|APP2|2017-08-11 13:44:...| 2| 女| | 10| 2| 助手1|2017-07-14 13:44:...| 2| 女| |null|null|null| null| 5| 男| +----+----+----+--------------------+----+----+

    我们可以看到,默认的链接方式是内链接,当然我们已可以使用其他的方式,通过第三个参数来指定。我们可以指定的类型有inner, outer, left_outer, right_outer, leftsemi类型,不过只有using形式指定两个及以上字段以及使用Column类型来链接的时候可以指定链接方式。

    比如下面的方式是错误的:df.join(df2,"user","outer").show()

    Processed: 0.019, SQL: 10