Манипуляции с наборами данных в Spark Java API - PullRequest
0 голосов
/ 09 мая 2018

У меня есть Dataset DS1 ниже. Я хочу собрать DS2 с использованием Spark Java API.

DS1:

+---------+------------+------------+
|  account|    amount  |    type    |
+---------+------------+------------+
| c1      |      100   |      D     |
| c1      |      200   |      C     |
| c2      |      500   |      C     |

DS2:

amount1 - это DS1 amount, где type = D и amount2 - это DS1 amount, где type = C

+---------+------------+------------+
|  account|    amount1 |   amount2  |
+---------+------------+------------+
| c1      |      100   |      200   |
| c2      |      0     |      500   |

Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 09 мая 2018

Для преобразования ds1 в ds2 в ожидаемый формат вы можете использовать следующий код -

val ds2 = ds1
           .withColumn("amount1", when($"type" === "D", $"amount").otherwise(0))
           .withColumn("amount2", when($"type" === "C", $"amount").otherwise(0))
           .select("account", "amount1", "amount2")
           .groupBy($"account")
           .agg(Map("amount1" -> "sum", "amount2" -> "sum"))

Надеюсь, это поможет!

...