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

У меня есть этот фрейм данных

+----------------+-----------------------------+--------------------+--------------+----------------+
|customerid|     |  event                      | A                  | B            |    C           |
+----------------+-----------------------------+--------------------+--------------+----------------+
|     1222222    | 2019-02-07 06:50:40.0       |aaaaaa              | 25           | 5025           |
|     1222222    | 2019-02-07 06:50:42.0       |aaaaaa              | 35           | 5000           |
|     1222222    | 2019-02-07 06:51:56.0       |aaaaaa              | 100          | 4965           |
+----------------+-----------------------------+--------------------+--------------+----------------+

Я хочу обновить значение столбца C по событию (tiemstamp) и сохранить только строку с последним обновлением значения в новом фрейме данных, как этот

+----------------+-----------------------------+--------------------+--------------+----------------+
|customerid|     |  event                      | A                  | B            |    C           |
+----------------+-----------------------------+--------------------+--------------+----------------+
|     1222222    | 2019-02-07 06:51:56.0       |aaaaaa              | 100          | 4965           |
+----------------+-----------------------------+--------------------+--------------+----------------+

данные поступают в потоковом режиме с искровой потоковой передачей

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете попробовать создать номер строки, разделенный по customerid и упорядочить по событию desc, и взять строки, где rownum равен 1. Надеюсь, это поможет.

df.withColumn("rownum", row_number().over(Window.partitionBy("customerid").orderBy(col("event").desc)))
    .filter(col("rownum") === 1)
    .drop("rownum")
...