Используйте карту для преобразования ввода (x, y) -
[(2110), (2130), (2120), (3200), (3206), (3206), (4150), (4160), (4170)]
до (х, (у, 1)
[(2, (110, 1)), (2, (130, 1)), (2, (120, 1)), (3, (200, 1)), (3, (206, 1)), (3, (206, 1)), (4, (150, 1)), (4, (160, 1), (4, (170, 1))]
Теперь, используйте redudceByKeyAndWindow, написав функцию сокращения, которая добавит две записи в виде -
(x, (y1, 1)) и (x, (y2, 1)) до (x, (y1 + y2, 1 + 1)
[(2, (360, 3)), (3, (612, 3)), (4, (480, 3))]
Запустите карту еще раз, чтобы получить среднее значение сейчас -
(x, (y1, y2)) - (x, (y1 / y2))
* * Тысяча двадцать-одина [(2120), (3204), (4160)] * * тысяча двадцать-дв