Apache Spark - Lidando com janelas deslizantes em RDDs temporais

Eu tenho trabalhado bastante com o Apache Spark nos últimos meses, mas agora recebi uma tarefa bastante difícil: calcular etc / média média / mínima / máxima em uma janela deslizante sobre uma janela emparelhadaRDD onde o componente Key é uma tag de data e o componente value é uma matriz. Portanto, cada função de agregação também deve retornar uma matriz, na qual, para cada célula, é calculada a média de toda a célula no período.

Quero poder dizer que quero a média a cada 7 dias, com uma janela deslizante de um dia. A unidade de movimento da janela deslizante é sempre uma e, em seguida, a unidade do tamanho da janela (por isso, a cada 12 semanas, a unidade de movimento da janela é 1).

Meu pensamento inicial agora é simplesmente iterar, se quisermos uma média por X dias, X vezes, e para cada vez apenas agrupar os elementos por sua data, com um deslocamento.

Então, se tivermos este cenário:

Dias: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Matrizes: A B C D E F G H I J K L M N O

E queremos a média por 5 dias, vou repetir 5 vezes e mostrar o agrupamento aqui:

Primeira iteração:

Grupo 1: (1, A) (2, B) (3, C) (4, D) (5, E)

Grupo 2: (6, F) (7, G) (8, H) (9, I) (10, J)

Grupo 3: (11, K) (12, L) (13, M) (14, N) (15, O)

Segunda iteração:

Grupo 1: (2, B) (3, C) (4, D) (5, E) (6, F)

Grupo 2: (7, G) (8, H) (9, I) (10, J), (11, K)

Grupo 3: (12, L) (13, M) (14, N) (15, O)

Etcetera, e para cada grupo, eu tenho que fazer um procedimento de dobrar / reduzir para obter a média.

No entanto, como você pode imaginar, isso é muito lento e provavelmente uma maneira bastante ruim de fazer isso. Eu realmente não consigo descobrir uma maneira melhor de fazê-lo.

questionAnswers(1)

yourAnswerToTheQuestion