Cómo filtrar datos usando funciones de ventana en spark

Tengo los siguientes datos:

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

Ahora quería filtrar los datos de tal manera que pueda eliminar las filas 6 y 7, para un uid en particular, quiero mantener solo una fila con el valor 'c' en el código

Entonces los datos esperados deberían 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

Estoy usando la función de ventana algo como esto:

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

Esto nos ayudaría a identificar cada fila con un código 'c'. ¿Puedo extender esto para filtrar filas para obtener los datos esperados?

Respuestas a la pregunta(1)

Su respuesta a la pregunta