Уже почти 4 дня я борюсь с этой проблемой и не могу найти эффективного решения.
У меня есть RDD в Spark в форме RDD[(Int, (Date, Double)]
(первое значение - просто индекс).
Как вы думаете, какой самый эффективный способ в Spark получить СДР в качестве выходного сигнала, где каждый элемент - это своего рода функция, применяемая к элементам всех подмножеств, составленных из n смежных элементов входного СДР? ?
Например, если задано как функция среднее и n = 5, результат должен быть:
input: [1.0, 2.0, 3.0, 2.0, 6.0, 4.0, 3.0, 4.0, 3.0, 2.0]
output: [ 2.8, 3.4, 3.6, 3.8, 4.0, 3.2]
Потому что:
1.0 + 2.0 + 3.0 + 2.0 + 6.0 = 14.0 / 5 = 2.8
2.0 + 3.0 + 2.0 + 6.0 + 4.0 = 17.0 / 5 = 3.4
3.0 + 2.0 + 6.0 + 4.0 + 3.0 = 18.0 / 5 = 3.6
2.0 + 6.0 + 4.0 + 3.0 + 4.0 = 19.0 / 5 = 3.8
6.0 + 4.0 + 3.0 + 4.0 + 3.0 = 20.0 / 5 = 4.0
4.0 + 3.0 + 4.0 + 3.0 + 2.0 = 16.0 / 5 = 3.2
Это было бы очень легко решить, но в Scala и Spark я очень новичок, и я не знаю, какой будет наилучшая практика в этом случае.
Я испробовал множество решений, в том числе некий вложенный map (), но, конечно, Spark не допускает такого поведения. Некоторые из них работают, но не очень эффективны.
Какой способ решения этой проблемы вы считаете лучшим c алгоритмом в Scala Spark?