Как соединить два фрейма данных и добавить поля в спарк - PullRequest
0 голосов
/ 29 марта 2019

У меня есть два кадра данных, например:

DF1
+----+-------+------+------+
|id  | value1|value2|value3|
+----+-------+------+------+
|  1 |10     |20    |30    |
|  2 |20     |30    |40    |
|  3 |30     |40    |50    |
+----+-------+------+------+

DF2
+----+-------+------+------+
|id  | value1|value2|value3|
+----+-------+------+------+
|  1 |100    |200   |300   |
|  2 |200    |300   |400   |
|  3 |300    |400   |500   |
+----+-------+------+------+

Я хочу объединить эти два кадра данных по идентификатору и одновременно добавить столбцы с одинаковыми именами в два кадра данных.Так что я хочу что-то вроде этого

+----+-------+------+------+
|id  | value1|value2|value3|
+----+-------+------+------+
|  1 |100+10 |200+20|300+30|
|  2 |200+20 |300+30|400+40|
|  3 |300+30 |400+40|500+50|
+----+-------+------+------+

Слияние части довольно просто с помощью spark

df1.join(df2,Seq("id"))

Есть ли эффективный способ добавить два столбца с одинаковым именем в двакадры данных вместе, как указано выше, с scala и spark.

1 Ответ

0 голосов
/ 30 марта 2019

В scala довольно просто манипулировать столбцами в общем виде.Вы можете сделать это так.

// extract the names of the columns to sum
val cols = df1.columns.filter(_!="id") 

// join and sum
val result = df1
    .join(df2,Seq("id"))
    .select( col("id") +: cols.map(c=>df1(c)+df2(c) as c) : _*)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...