Какова лучшая практика, чтобы перебирать RDD в Spark, получая как предыдущий, так и текущий элемент? То же, что и функция reduce
, но возвращает и RDD вместо одного значения.
Например, задано:
val rdd = spark.sparkContext.textFile("date_values.txt").
map {
case Array(val1, val2, val3) =>
Element(DateTime.parse(val1), val2.toDouble)
}
Выход должен быть новым RDD с разницей в val2 Атрибуты:
Diff(date, current.val2 - previous.val2)
С помощью функции map
я могу получить только текущий элемент, а с помощью функции reduce
я могу вернуть только 1 элемент, а не СДР. Я мог бы использовать функцию foreach
, сохраняя во временных переменных предыдущее значение, но я не думаю, что это будет соответствовать рекомендациям Scala -Spark.
Как вы думаете, что является наиболее подходящим способом справиться с этим?