Как сделать ВНЕШНЕЕ СОЕДИНЕНИЕ в scala

#scala #join #apache-spark #dataframe

#scala #Присоединиться #apache-spark #фрейм данных

Вопрос:

У меня есть два фрейма данных: df1 и df2

df1

 |--- id---|---value---|
|    1    |    23     |
|    2    |    23     |
|    3    |    23     |
|    2    |    25     |
|    5    |    25     |
  

df2

 |-idValue-|---count---|
|    1    |    33     |
|    2    |    23     |
|    3    |    34     |
|    13   |    34     |
|    23   |    34     |
  

Как мне это получить?

 |--- id--------|---value---|---count---|
|    1         |    23     |    33     |
|    2         |    23     |    23     |
|    3         |    23     |    34     |
|    2         |    25     |    23     |
|    5         |    25     |    null   |
  

Я делаю :

  val groupedData =  df1.join(df2, $"id" === $"idValue", "outer") 
  

Но я не вижу последнего столбца в GroupedData. Это правильный способ сделать? Или я делаю что-то не так?

Ответ №1:

Из вашего ожидаемого результата вам нужно ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ.

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