【问题标题】:how to join specific column of dataframe with another in scala spark [duplicate]如何在scala spark中将数据框的特定列与另一个列连接[重复]
【发布时间】:2023-03-26 07:30:01
【问题描述】:

我有四个数据框,

df1 为,

 name         city
--------------------------------
 kum        chennai
kamesh     bangalore

df2 为,

name   street
-------------------------------
kum     2nd str
kamesh  10th str

我需要添加城市和街道的名称。 输出数据帧,例如, df3 =

name     street    city
-----------------------------
kum       2nd str    Chennai
kamesh    10th str   bangalore.

如何使用 Scala 转换为 df3

【问题讨论】:

    标签: scala apache-spark apache-spark-sql scale


    【解决方案1】:

    按照以下方式加入他们

    val df3 = df1.join(df2, Seq("name"))
    

    默认是一个内连接,你可以定义join类型为

    val df3 = df1.join(df2, Seq("name"), "inner")
    

    你的输出应该是

    +------+---------+--------+
    |name  |city     |street  |
    +------+---------+--------+
    |kum   |chennai  |2nd str |
    |kamesh|bangalore|10th str|
    +------+---------+--------+
    

    【讨论】:

      【解决方案2】:

      你可以使用这个:

      1. val df3 = df1.join(df2, df1("name").equalTo(df2("name"))) 但它会显示两次加入键

      2. val df4 = df1.join(df2, Seq("name"), "inner") 这只会显示一次加入密钥 如下代码: 在此输入代码

      import spark.implicits._ val df1: DataFrame = Seq(("kum","chennai"),("kamesh","bangalore")).toDF("name","city") val df2: DataFrame = Seq(("kum","2nd str"),("kamesh","10th str")).toDF("name","street") val df3 = df1.join(df2, df1("name").equalTo(df2("name"))) df3.show() val df4 = df1.join(df2, Seq("name"), "inner") df4.show()

      结果:

      +------+---------+------+--------+
      |  name|     city|  name|  street|
      +------+---------+------+--------+
      |   kum|  chennai|   kum| 2nd str|
      |kamesh|bangalore|kamesh|10th str|
      +------+---------+------+--------+
      +------+---------+--------+
      |  name|     city|  street|
      +------+---------+--------+
      |   kum|  chennai| 2nd str|
      |kamesh|bangalore|10th str|
      +------+---------+--------+
      

      【讨论】:

      • 嗨,如果我在数据帧 2 中有不同的列,例如 val df2:DataFrame = Seq(("Object1","OBJECT_TYPE1"),("OBJECT2","OBJECT_TYPE2")).toDF( "OBJECT","TYPE"),并想添加到 df1,结果显示空行。如何加入。
      猜你喜欢
      • 2021-09-02
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 2020-08-13
      • 2019-12-03
      • 2023-03-20
      相关资源
      最近更新 更多