Итеративное программирование - задания выполняются без их запуска - PullRequest
0 голосов
/ 04 мая 2019

В разработанном итеративном алгоритме, в котором я рекурсивно вызываю функцию, происходит непредвиденное поведение выполнения задач.

Сама функция содержит несколько преобразований в СДР и действие "isEmpty" дляостановите рекурсивное выполнение.

Проблема состоит в том, что преобразования оцениваются без вызова действия.

, как описано в коде, который я называю действием "IsEmpty" только каждые пять итераций.Функция процесса содержит только такие преобразования, как: фильтр, объединение, широковещание, выбор DF, кэш, объединение.

 var layer_index=0  
 def iterate(layer:RDD[Long])={
 layer.cache()
 if(layer_index%5==0) if(layer.isEmpty) return null
 val nextlayer=process(layer)
 layer_index=layer_index+1
 iterate(nextlayer)
 }

Но, как вы можете видеть на рисунке ниже, действия выполняются до того, как временная шкала достигнет "isEmpty "

график

Почему у меня есть задания для выполнения пула потоков?эти задания "Исполнитель пула протектора" соответствуют итерациям 2,3,4, где я не выполняю "isempty".у меня должна быть только работа "isempty", соответствующая итерации 5.

Я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...