Как эффективный способ обновить стоимость в СДР Spark?
Я пишу графическую программу вScala
сSpark
, Набор данных имеет 4 миллиона узлов и 4 миллиона ребер (вы можете рассматривать это как дерево), но каждый раз (Iteration
), Я редактирую только его часть, а именно поддерево с корнем данного узла и узлы на пути между данным узлом и корнем.
Iteration
имеет зависимость, что означаетi+1
Iteration
нужен результат изi
, Так что мне нужно хранить результат каждогоIteration
для следующего шага.
Я пытаюсь найти эффективный способ обновленияRDD
, но пока понятия не имею. Я считаю, чтоPairRDD
иметьlookup
функция, которая может сократить время вычислений отO(N)
, тоже(M
),N
Обозначим общее количество объектов вRDD
а такжеM
обозначим количество элементов в каждом разделе.
Так что я думаю, есть ли возможность обновить объект вRDD
сO(M)
? Или, в идеале, O (1)? (Я вижу электронное письмо в списке рассылки Spark о том, чтоlookup
может быть изменен для достижения O (1)
Другое дело, если бы я мог достичьO(M)
для обновленияRDD
Могу ли я увеличить раздел до некоторого числа, большего количества ядер, которое у меня есть, и добиться лучшей производительности?