Como filtrar dados usando funções de janela no spark

Eu tenho os seguintes dados:

rowid uid time code
   1  1      5    a
   2  1      6    b
   3  1      7    c
   4  2      8    a
   5  2      9    c
   6  2      9    c
   7  2     10    c
   8  2     11    a
   9  2     12    c

Agora eu queria filtrar os dados de forma que eu possa remover as linhas 6 e 7. Para um uid específico, eu quero manter apenas uma linha com o valor 'c' no código

Portanto, os dados esperados devem ser:

rowid uid time code
   1  1      5    a
   2  1      6    b
   3  1      7    c
   4  2      8    a
   5  2      9    c
   8  2     11    a
   9  2     12    c

Eu estou usando a função de janela algo como isto:

val window = Window.partitionBy("uid").orderBy("time")
val change = ((lag("code", 1).over(window) <=> "c")).cast("int")

Isso nos ajudaria a identificar cada linha com um código 'c'. Posso estender isso para filtrar linhas para obter os dados esperados

questionAnswers(1)

yourAnswerToTheQuestion