如何在scala中执行OUTER JOIN

New*_*bie 3 scala join dataframe apache-spark

我有两个数据帧:df1和df2

DF1

|--- id---|---value---|
|    1    |    23     |
|    2    |    23     |
|    3    |    23     |
|    2    |    25     |
|    5    |    25     |
Run Code Online (Sandbox Code Playgroud)

DF2

|-idValue-|---count---|
|    1    |    33     |
|    2    |    23     |
|    3    |    34     |
|    13   |    34     |
|    23   |    34     |
Run Code Online (Sandbox Code Playgroud)

我怎么得到这个?

|--- id--------|---value---|---count---|
|    1         |    23     |    33     |
|    2         |    23     |    23     |
|    3         |    23     |    34     |
|    2         |    25     |    23     |
|    5         |    25     |    null   |
Run Code Online (Sandbox Code Playgroud)

我在做 :

 val groupedData =  df1.join(df2, $"id" === $"idValue", "outer") 
Run Code Online (Sandbox Code Playgroud)

但我没有看到分组数据中的最后一列.这是正确的做法吗?或者我做错了什么?

Kir*_*anM 7

根据您的预期输出,您需要LEFT OUTER JOIN.

val groupedData =  df1.join(df2, $"id" === $"idValue", "left_outer").
       select(df1("id"), df1("count"), df2("count")).
       take(10).foreach(println)
Run Code Online (Sandbox Code Playgroud)