Como escrever Pyspark UDAF em várias colunas?
Eu tenho os seguintes dados em um dataframe pyspark chamadoend_stats_df
:
values start end cat1 cat2
10 1 2 A B
11 1 2 C B
12 1 2 D B
510 1 2 D C
550 1 2 C B
500 1 2 A B
80 1 3 A B
E eu quero agregá-lo da seguinte maneira:
Eu quero usar as colunas "start" e "end" como as chaves agregadasPara cada grupo de linhas, preciso fazer o seguinte:calcular o número único de valores em amboscat1
ecat2
para esse grupo. por exemplo, para o grupo destart
= 1 eend
= 2, esse número seria 4 porque há A, B, C, D. Esse número será armazenado comon
(n = 4 neste exemplo).para ovalues
campo, para cada grupo eu preciso classificar ovalues
e selecione todos osn-1
valor, onden
é o valor armazenado da primeira operação acima.no final da agregação, eu realmente não me importo com o que estácat1
ecat2
após as operações acima.Um exemplo de saída do exemplo acima é:
values start end cat1 cat2
12 1 2 D B
550 1 2 C B
80 1 3 A B
Como faço para usar os quadros de dados pyspark? Presumo que preciso usar um UDAF personalizado, certo?