RDD имеет значащий (в отличие от случайного порядка, заданного моделью хранения), если он был обработан sortBy()
, как объяснено в этом reply.Какие операции сохраняют заказ RDD?
Какие операции сохранить, что заказ?
Е.Г., это гарантируется, что (после a.sortBy()
)
a.map(f).zip(a) ===
a.map(x => (f(x),x))
Как насчет
a.filter(f).map(g) ===
a.map(x => (x,g(x))).filter(f(_._1)).map(_._2)
насчет
a.filter(f).flatMap(g) ===
a.flatMap(x => g(x).map((x,_))).filter(f(_._1)).map(_._2)
Здесь "равенство" ===
понимается как «функциональная эквивалентность», то есть невозможно отличить результат с использованием операций на уровне пользователя (то есть без чтения журналов & c).
Я думаю, что любая операция, которая изменяет элементы в RDD, не может быть сохранена. например. 'IntRdd.map (х => х * -1)'. На rdds с ключом есть выделенные операции, которые сохраняют порядок 'pairRDD.mapValues' и pairRDD.flatMapValues' - не уверены, есть ли обобщение, которое могло бы удовлетворить этот вопрос - следовательно, комментарий. – maasg
RDD неизменяемы; все операции создают новые RDD. – sds
Итак, я думаю, у вас есть свой собственный ответ, верно? – maasg