Как я могу переписать в пустых записях Spark DataFrame другие допустимые записи из того же самого кадра данных? - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть Spark DataFrame с такими данными, как

|  id |  value1 |value2  |
------------------------
|  1  |  null   |    1   |
|  1  |   2     |  null  |

, и я хочу преобразовать его

в

|  id |  value1 |value2 |
-----------------------
|  1  |    2    |   1   |

То есть мне нужно получитьстроки с одинаковым идентификатором и объединение их значений в одну строку.

Не могли бы вы объяснить, какой самый масштабируемый способ сделать это?

1 Ответ

0 голосов
/ 25 сентября 2018
df.groupBy(“id”).agg(collect_set(“value1”).alias(“value1”),collect_set(“value2”).alias(“value2”))

// более элегантный способ создания динамических столбцов

df.groupBy(“id”).agg(df.columns.tail.map((_ -> “collect_set”)).toMap).show

// 1.5

Val df1=df.rdd.map(i=>(i(0).toString,i(1).toString)).groupByKey.mapValues(_.toSet.toList.filter(_!=“null”)).toDF()
Val df2 = df.rdd.map(i=>(i(0).toString,i(2).toString)).groupByKey.mapValues(_.toSet.toList.filter(_!=“null”)).toDF()
df1.join(df2,df1(“_1”) === df2(“_1”),”inner”).drop(df2(“_1”)).show
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...